One control room that runs many Claude sessions from WhatsApp. Command the fleet from your phone, get the truth back, not a guess. This page is the running log of what we build.
Post in the control-room group. Commands are yours only, so a client chat can never trigger one. Say it loosely, typos are fine.
| You type | It does |
|---|---|
list / sessions | Posts the real running sessions from tmux. |
incoming | Real check of which project groups have an unanswered message. |
spin up ats | Launches a session, labels it, stands it by, confirms the true list. |
spin up those / for them | Spins up every group that has an unanswered message. |
close edge / wrap payroll | Closes that session, confirms the true list. |
Installed tmux. Each project runs as a persistent, named session that survives a closed lid or dropped connection, and can be reached remotely over Tailscale.
Proven live with real sessions. The center reads a session screen and types into it. Loud labels at two layers: a tmux badge and the Claude session name via /rename.
Spin up, close, and list now run real tmux and report the truth, ahead of the language model so it cannot guess. Fuzzy and typo tolerant. Trust and plugin popups are cleared automatically on spin up.
The daemon once claimed "no fresh messages" when two groups had unanswered ones. Added a real database check, so incoming now returns the true list.
After "spin up whatsagent for them" was misread, taught it that them, those, all, and for them mean the incoming set. Standing rule: each gap it fumbles gets taught, and the command you meant gets carried out.
| Actor | What it is | Posts to WhatsApp |
|---|---|---|
| Control room | The session you talk to. Acts only when told. | No |
| Daemon | Always on. Runs commands, or drafts a reply for non-commands. | Yes |
| Queue worker | Headless helper the daemon spawns for real work. Has tools. | Yes |