-
Notifications
You must be signed in to change notification settings - Fork 0
Checking a seat is healthy
joshdaugherty edited this page Sep 26, 2026
·
3 revisions
Describes robot-council/cli v0.4.24.
A seat is a chain, and every link can fail silently: an idle seat with a broken link looks exactly like a seat with nothing to do (#113). Check each link with something that could have told you it was broken.
| link | check | healthy |
|---|---|---|
| version | robot-council --version |
robot-council v0.4.24 or later for everything these pages describe. v0.4.2 is the floor for any request at all; see Starting a seat
|
| enrolled | ask the agent to join the fleet
|
the tool answers Joined the fleet as session N… The fleet's tools are available now. A machine not enrolled for that harness is told what is missing, for example This machine is not enrolled as `cursor` against that fleet.
|
| joined, and still | ask the agent to call presence_heartbeat
|
it answers with this seat's session as active
|
| anyone can post | the bridge's stderr at join | no line saying No session on this fleet is running in the `coordinator` role. That line means no directive can be posted until somebody is (#113) |
| one seat in this checkout | the bridge's stderr at start | no line saying another bridge is running in this checkout (pid N). That line means two seats share one sink, and either can take the other's events (#320) |
| channel (Claude Code) | the MCP log | a Channel notifications registered line for this conversation (Starting a seat) |
| stop hook found (Claude Code) | the bridge's log, once at start |
robot-council: stop hook: found in <file>. Without one, the line says none found, and a woken agent reads the feed itself instead (What a seat receives, #306) |
| the sink | from the seat's own checkout: robot-council pending --peek; echo "rc=$?"
|
prints what is waiting, or nothing, with rc=0, and leaves it in place. rc=1 means it could not look, usually because ROBOT_COUNCIL_SERVICE or ROBOT_COUNCIL_HARNESS is unset in that shell |
| the stop hook | the README's verifying it once | the README's three-row table: the hook delivered, the harness discarded its output, or it never drained |
The bridge heartbeats every 60 seconds on its own, so a seat that is healthy but idle is not swept.
robot-council about is not a better check: its first line matches --version, but the rest ("Built so far: enroll") predates most of the commands.
Watch for two things that pass these checks and still leave a seat deaf:
-
A hook that names the sink differently from the bridge. The sink is keyed by service, harness and project, and, with no project named, by the checkout (v0.4.23, #299). A hook whose
ROBOT_COUNCIL_PROJECTorROBOT_COUNCIL_HARNESSdiffers from the bridge's reads a different, empty sink, and--peekfrom your shell may read yet another. Run--peekwith the hook script's own values, from the seat's checkout: your shell has noCLAUDE_PROJECT_DIR, sopendingresolves the checkout from the folder it is run in. - Two copies of one conversation, one with the channel and one without (Restarting a seat).