Brewtonic · Internal Ops

WhatsAgent Control Center

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.

State as of 13 Jul 2026

Current state

Live work sessions

5
Running in tmux on the mac-mini, reachable from the control room.

Command handler

Live
Deterministic, ahead of the LLM. Fuzzy and typo tolerant. Freddie only.

Confabulation

Closing
Guesses replaced with real queries, one question at a time.
ats edge p1parents payroll property

How you drive it

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 typeIt does
list / sessionsPosts the real running sessions from tmux.
incomingReal check of which project groups have an unanswered message.
spin up atsLaunches a session, labels it, stands it by, confirms the true list.
spin up those / for themSpins up every group that has an unanswered message.
close edge / wrap payrollCloses that session, confirms the true list.

Progress log

13 JUL 2026

tmux fleet on the mac-mini

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.

13 JUL 2026

Control room can start, prompt, read, and close sessions

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.

13 JUL 2026

WhatsApp command handler in the daemon

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.

13 JUL 2026

Incoming check replaces the guess

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.

13 JUL 2026

It learns from how you talk

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.

The three actors

ActorWhat it isPosts to WhatsApp
Control roomThe session you talk to. Acts only when told.No
DaemonAlways on. Runs commands, or drafts a reply for non-commands.Yes
Queue workerHeadless helper the daemon spawns for real work. Has tools.Yes

Guardrails

Freddie is the gate. Anything client facing, spending, or deploying waits for a nod. The control room dispatches, it does not authorise.
Truth, not guesses. System state is read from real tmux and the message database, never invented.
Wrap before close. A session that has done work is wrapped first, never killed cold.
Walled clients. The control room touches every project, so it is the strictest on keeping one client out of another.

Next levers