Blood. Steel. Bone.
Desktop + Android GUI for OpenShield β the harness that learns. Svelte 5 + Tauri v2 + Rust, armored in the Blackshield mercenary shell.
- Dashboard β binary status, API server control (loopback or π LAN/Tailscale), session stats
- Chat β token-level streaming over WebSocket, with CLI fallback
- Agent β autonomous tasks with structured thinking/tool events + yolo mode
- Memory β semantic / recent / keyword search of the persistent vault
- Models, Tools, Doctor, Config β the full arsenal
- Shell β embedded device shell on Android
On launch, Armory boots openshield serve on 127.0.0.1:1984 (adopting an
existing instance). Toggle π LAN on the Dashboard to bind 0.0.0.0 so the
Android app can connect over LAN/Tailscale. Without a server, views fall back
to spawning the CLI.
β οΈ The serve API has no auth layer β bind0.0.0.0only on trusted networks (your tailnet).
On Android there is no CLI to spawn β the openshield crate runs in-process,
serving the same API on loopback. Chat, Agent, and the embedded Shell work
standalone; the app can also connect to a desktop server (tap the connection
badge β enter host:port).
Build the APK (requires the openshield repo checked out as a sibling directory):
git clone https://github.com/synthalorian/openshield ../openshield
export ANDROID_HOME=/path/to/Android/Sdk
export NDK_HOME=/path/to/Android/Sdk/ndk/28.2.13676358 # literal path!
npm install
npm run tauri android init
npm run tauri android build -- --debugThirteen battle-grade themes from the π¨ picker (persisted). Blackshield is the default β blood and steel, bone on iron. The rest of the company's kit: Neon War, Synthwave '84, White Knight, Swiftblade, War Forge, War Tiger, Deep Watch, Blood Oath, Verdant March, War Council, Field Rest, Midnight Watch.
UI is set in 3270 β the IBM 3270 mainframe terminal face (bundled, BSD-3-Clause).
npm install
npm run tauri devnpm run tauri build # binary + .deb + .rpm (AppImage may fail on linuxdeploy)
scripts/install-desktop.sh # Linux launcher + iconsPush a v* tag for CI-built Linux/macOS/Windows bundles and the Android
APK. The CI APK is debug-signed β fine for sideloading; a release keystore
lands when Armory hits a store.
Blood. Steel. Bone. β This is the wave. π‘οΈπ
If this project saved you time, solved a problem, or just made your day a little more neon, you can fuel the next one:



