-
Notifications
You must be signed in to change notification settings - Fork 0
Mobile App
blugo is the blumi phone app — a Flutter client that mirrors the TUI, talking to a
blumi serve gateway over your LAN. It's built for the Pixel 9 Pro Fold (single-pane
in portrait, multi-pane unfolded) but runs on any modern Android device.
| Welcome · interactive grid | Chat · streaming | Control center | Command palette |
|---|---|---|---|
| welcome grid diagram | chat | control | command palette |
The whole app rides one design system (Living-Rose tokens + a reusable widget kit), so every screen shares a consistent, animated look — gradient wordmarks, accent-bordered chat bubbles, status colors, pressable cards, and reduced-motion-aware transitions.
When the agent calls a gated tool (and YOLO is off), an inline permission card appears —
Allow once, Allow session, or Deny, right from the phone (safe commands like echo
auto-approve; writes and dangerous commands are gated):
The welcome screen is an interactive network diagram of your blumi grid (drawn natively, no WebView): this device is the hub at the center, your saved gateways orbit it on gradient spokes, and auto-discovered (mDNS) gateways appear as dashed/dotted nodes with a + badge. A radar sweep animates while it scans the LAN.
- Tap a saved node → Connect · Edit · Delete (the forget button sits on the side).
- Tap a dashed (discovered) node → a connect sheet with the password auto-focused; the name, host, and port are pre-filled from discovery.
-
+ Add → add a gateway by IP (
host:port). - A saved gateway whose token went stale prompts for the password again on connect.
- On your machine, start a gateway → Gateway:
blumi serve pair blumi serve install --host <LAN-ip>
- Open blugo. Saved + discovered gateways appear as nodes on the welcome diagram — tap a node to
connect, or + to add one by IP (
host:port). - Enter the gateway password. Done — the same session is live in the TUI, web UI, and phone.
You can save multiple gateways by name and switch between them; discovered-but-unsaved ones appear automatically as dashed nodes.
- An interactive grid welcome diagram (above) — connect, edit, forget, or add gateways by tapping nodes.
- A
/command palette (also from the composer) for quick actions: new session, compact, undo, YOLO, control center, speak last reply, switch gateway. - Streaming chat with markdown + syntax-highlighted code, tool cards, and the animated thinking mascot.
- Approval / clarify / plan cards — approve tools (once / session / deny) right from the phone.
- Sessions — new / resume; transcript auto-refreshes after each turn (+ pull-to-refresh).
- Control center — model, persona, theme, YOLO, and tabs for Status, Tasks, Grid, Usage, Skills, Memory, and Voice.
- Grid — delegate a task across your LAN grid right from the phone: pick all peers or one, type a task, and get each machine's result back (hostname + output + latency). It's a direct dispatch, so it works on any model — no tool-calling required. See Grid.
- Voice — TTS (ElevenLabs / OpenAI) and mic→text (Whisper). See Voice.
A signed release APK is produced by flutter build apk --release. Sideload it:
adb install -r build/app/outputs/flutter-apk/app-release.apk
Prereqs: Flutter 3.44.1 stable, Android SDK + JDK 17 (flutter doctor all green).
cd blugo flutter pub get flutter run -d <device> # debug flutter build apk --release # release (signing: see blugo/README.md)
Release signing reads android/key.properties + a keystore (both gitignored). Full steps are in
blugo/README.md.
- The app and gateway must be on the same LAN/Wi-Fi. If discovery fails, add the gateway by
IP and check the gateway is
running(blumi serve status). - Backgrounding the app and returning reconnects automatically (SSE with Last-Event-ID replay).