Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Mobile App

ankurCES edited this page Jun 7, 2026 · 6 revisions

Mobile App (blugo)

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):

blugo permission card — Allow once / Allow session / Deny for a FileWrite

Welcome screen — your grid at a glance

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 nodeConnect · 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.

Connect to a gateway

  1. On your machine, start a gateway → Gateway:
    blumi serve pair
    blumi serve install --host <LAN-ip>
  2. 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).
  3. 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.

What's inside

  • 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.
  • Dispatch — a Telegram-style inbox: one isolated quick-chat thread per node + a Broadcast channel, with push notifications so you can fire-and-forget and get the reply back. See below.

Dispatch — chat each node, get a push back

Dispatch is a lightweight inbox for talking to your nodes without babysitting a session. Open it from the Dispatch icon on any screen, or from a node's Dispatch action on the welcome diagram.

Inbox Thread + push Broadcast · all nodes
dispatch inbox dispatch thread with push broadcast
  • A row per node. Each saved gateway gets its own dispatch thread — an isolated session (stable id dispatch) that's separate from the workbench chat you see in HomeShell, so dispatching never disturbs whatever you're doing in the main session (and vice-versa). The same thread is live whether you reach it from the inbox or a tapped push.
  • Fire-and-forget with push. Send a message, background the app, and when the node finishes its turn a push notification lands with a preview of the reply. Tap it to jump straight into that node's thread.
  • Broadcast. The top Broadcast row fans one message to every saved gateway at once and shows each node's reply in its own card (with a per-node timeout, so one offline node can't block the rest). Great for "say OK", "what branch are you on?", or a quick health-check across the grid.

Push setup (zero-config on LAN)

Push is on by default and needs no settings in the app. To enable backgrounded delivery, drop a Firebase service account on each gateway machine:

# on the gateway (the machine running `blumi serve`)
cp your-firebase-adminsdk.json ~/.blumi/fcm-service-account.json
chmod 600 ~/.blumi/fcm-service-account.json

That's it — the gateway auto-detects the file and starts sending turn-complete pushes via FCM HTTP v1 (the project id is read from the file; registered device tokens are pruned automatically when they go stale). Without the file the gateway is a silent no-op — dispatch still works in-app, you just don't get backgrounded pushes. See Configuration for details.

Push is Android-only for now. The app build needs its own android/app/google-services.json (gitignored); without it the app still builds and falls back to local notifications. Neither the service account nor google-services.json is ever committed.

Install a build

A signed release APK is produced by flutter build apk --release. Sideload it:

adb install -r build/app/outputs/flutter-apk/app-release.apk

Build it yourself

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.

Tips

  • 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).

Clone this wiki locally

AltStyle によって変換されたページ (->オリジナル) /