Watching Every Process on Every Box You Own (Demo Walkthrough)
The fleet view is one screen with one row per running agent across every paired machine. Status, runtime, last 80 chars of output, host, command. Click to attach. Long-press to kill. The phone version is the same fleet view, smaller, plus haptic approvals.
This is a walkthrough of what the dashboard actually looks like when you have a real workload. Five minutes. No marketing slide.
Setup for the demo
Four machines paired:
akshays-mbp— daily-driver M3 MacBook Progpu-rig— Linux box, 4090, trainingmac-mini-tv— old M1 mini under the TV running browser agentspi-5— Raspberry Pi 5 running scrapers
Seven agents running:
- Claude Code on the laptop, working on this blog post
- Claude Code on gpu-rig, refactoring the model training code
- A python script on the Pi scraping a job board
- Aider on the mini, fixing a CSS issue in a side project
- Playwright on the mini, doing a daily site-monitoring run
- Codex on the laptop, running a small build task
- A long-running data prep job on the GPU rig
What the fleet view shows
Top of screen: brand mark, search, account menu. Below: a list. Each row:
| Column | Example |
|---|---|
| Status dot | ● running · ● exited · ● crashed-out |
| Agent name | cc-blog · ag-7f3a |
| Host | akshays-mbp |
| Command | claude --resume blog-post (truncated) |
| Runtime | 1h 14m |
| Last output | … looking at src/components/Mark.tsx |
| Sandbox chips | workspace_rw · network · subprocess |
Click any row → full PTY view in xterm.js, with the last 64KB of scrollback restored.
What the side panel shows
The right rail is the inspector. Clicking an agent row populates it:
- PID, started time, exit code if exited
- Working directory, env vars (sensitive ones redacted)
- Restart count (e.g.
2 restarts in last hour) - Capability chips (with edit-link to grant more)
- Recent audit-log entries (sandbox blocks, permission asks)
- Buttons: Attach, Kill, Edit Capabilities, View History
What the phone shows
Same fleet view, denser. Tap an agent → attach to its PTY (yes, you can type from your phone — autocomplete and gesture support, not graceful but workable). Pull-down on a row reveals quick actions: kill, restart, copy ID.
The push-notification surface is the actual phone use case. When agent #7 (the data prep on the GPU rig) hits a row that needs a permission ("can I write to /mnt/big-storage?"), the phone buzzes. Long-press → Approve. The permission is granted in 200ms; the agent continues. I never had to be at my desk.
What the CLI shows
celistrad ctl is a readline REPL with tab completion. It's the same API surface as the dashboard:
$ celistrad ctl
> list
ag-7f3a · cc-blog · running · 1h 14m · akshays-mbp
ag-9b22 · cc-train · running · 47m · gpu-rig
ag-3e51 · scrape · running · 6h 32m · pi-5
ag-c184 · aider-css · exited · 12m · mac-mini-tv (exit 0)
ag-d701 · playwright · running · 4m · mac-mini-tv
ag-1a09 · codex-build · running · 22m · akshays-mbp
ag-5f7d · data-prep · running · 53m · gpu-rig
> attach ag-7f3a
[attaching to cc-blog on akshays-mbp]
...
Why each piece is there
Fleet view. Eliminates the "which machine is that running on?" tab-flip. Sort by runtime (recently started), filter by host, filter by status.
Inspector rail. The 80% of inspecting an agent that doesn't require attaching the PTY. Reading capabilities, recent audit entries, restart count — all without losing your focus on the fleet view.
PTY in browser. Because attaching shouldn't require a different tool. The xterm.js + WebSocket + 64KB replay ring is enough to feel like a real terminal.
CLI. Because some of us live in terminals and don't want to leave. Same shape as the dashboard, scriptable.
Phone. Because permissions arrive when you're not at your desk and waiting for them is wasted time.
What's not there (yet)
Per-machine resource graphs (CPU, GPU, RAM). They're useful but they're a different product — Glances or a separate metrics layer. We'd rather get fleet supervision right than half-build a metrics tool.
Multi-user collab. The "share an agent with a colleague's dashboard" feature is half-built; sharing makes the auth model more complex and we're being slow about it.
Try it
Free for 1 paired node — download the daemon, sign in, click Pair. The fleet view is the first thing you see after pairing.
FAQ
How does the fleet view stay live?
Server-Sent Events from each daemon to the dashboard. Latency is whatever the connection is — sub-millisecond on LAN, 50–200ms over the tunnel.
What if I have 100 agents?
Virtualized list — smooth at 1000+. Filter by host or status to focus.
Does it work in dark mode and light mode?
Both, with a toggle. The brand is naturally dark; the light theme uses the same palette inverted.
Can I customize the columns?
The default columns are fixed for now (we wanted to ship one good layout instead of a bad customizer). Future versions will allow column reorder + show/hide.