A companion app for Vectrum Code: the desktop's projects and threads on a phone, in the desktop's look and themes. It's a remote client like another desktop: threads run on the computer, with its agents, files, terminals and devices.
On the computer, open Settings → Connections and turn on Allow remote connections. Then, on
the phone, scan the QR code shown under Pairing code, or paste the code
(192.168.2.10:47823/<key>). A vectrum://… link pairs too. Several computers can be paired;
their threads share the sidebar, tagged with each one's name. The connection isn't encrypted,
so pair on networks you trust or over a VPN such as Tailscale or WireGuard.
/ menu, steering and queueing, and the dock for approvals, questions, plans, queued
messages, background tasks, usage limits and the task list.Left out because the remote connection doesn't carry them: the browser panel, usage reports,
@ file mentions, editing providers and starring models.
./gradlew :app:assembleDebug # app/build/outputs/apk/debug/app-debug.apk
./gradlew :app:testDebugUnitTest
JDK 21 and the Android SDK (platform 37) are needed; point local.properties at the SDK
(sdk.dir=…) or set ANDROID_HOME.
net/: the desktop's remote protocol (Protocol.kt, mirroring src/remote/mod.rs) and the
WebSocket that keeps a host connected (Connection.kt).data/: the app's state as Compose state: paired hosts, their projects, threads and open
transcripts (AppState.kt), and this phone's own preferences (DevicePrefs.kt).theme/: MetalUI. Palette.kt reads assets/themes.json, which the desktop exports
(cargo test export_android_themes -- --ignored), so every theme matches it exactly;
Metal.kt has the surfaces (raised, well, plate, with the desktop's layered shadows), caps,
switches, LEDs, keycaps and engraved labels.ui/: sidebar/, chat/ (header, transcript, Markdown), composer/ (composer, pickers,
dock, start screen), diff/, settings/, pair/ (pairing, adding projects), panels/
(right panel, subagents, command palette), terminal/ and device/.term/: the terminal emulator the terminal panel draws.scripts/lucide.py: turns the desktop's Lucide icons into vector drawables (icons.txt
lists the ones in use).