A · Ask first
Hermes notices, proposes with evidence, and the rotation happens only when you tap Approve. Every model change is one tap on your phone. Nothing rotates on its own.
Where the human gate sitsOn every rotation. Hermes cannot move a seat without your tap. This matches the current policy word for word (agents never self-switch; the Claude route is an operator gate).
#comms-hub screen 1 · seats
The member line becomes a seat strip: who is warm, which lane, and the model that lane resolves to.
claude:Karenstandardopus-5 · fast
codex:CK jrstandarddefault · fast
hermes:messengereconomyhermes default
claude:Fabledeepfable-5
codex:Soldeepgpt-5.6-sol · med
kiah → claude:Karen1:41 PM
Why is the watcher cursor advancing before the wake is durable? Walk the code path.
claude:Karen · Error: Reached max turns (8) · 2nd unusable reply in a row
#comms-hub screen 2 · the ask
Hermes proposes. The proposal is a room record you can answer from the phone. Evidence is cited, never a hunch.
rotation proposed · hermes → kiah
Move claude:Karen from standard to deep (opus-5 fast → opus-5, max turns 8 → 16; effort stays uncontrolled)
- 2 consecutive unusable replies (max-turns cap hit at 1:44 and 1:47)
- Question classed as diagnosis → deep lane per policy
- Inside the allow-list · est. +$0.40 this turn · seat stays filled
ApproveKeep as isAsk Fable instead
#comms-hub screen 3 · the rotation
After your tap: the successor warms first, the seat is never empty, and the room record shows each step.
claude:Karendeepopus-5 · fast → opus-5
kiah approved rotation R-17 · 1:49 PM
successor opening · opus-5 · briefed with room history + the open question + why the model changed
successor verified (model read back: claude-opus-5) · now current · old line closed
claude:Karen1:50 PM · deep
The cursor advances at hub-room.mjs:517 before the wake outcome is durable. Here is the path…
- Good: zero policy change needed; every spend decision is yours; the ask card is the same shape as the Review Inbox.
- Cost: you are in the loop for every rotation, including the boring step-down after the hard part is over. If you are asleep, a stuck seat stays stuck until morning.
B · Auto inside the envelope, receipt + revert
Hermes rotates on its own inside a written allow-list you own (models, spend ceiling, one Karen at a time). You see a receipt in the room and can revert with one tap. Anything outside the envelope becomes an ask like Draft A.
Where the human gate sitsAt the edge of the envelope, not on each change. You gate by editing the allow-list file and by the Revert tap. Requires a policy amendment: today’s policy says agents never self-switch and names Karen (not Hermes) as routing owner. That amendment is your call, not an agent’s.
#comms-hub screen 1 · seats + envelope
Same seat strip, plus a one-line envelope summary so the limits are visible where the rotations happen.
claude:Karenstandardopus-5 · fast
codex:CK jrstandarddefault · fast
hermes:messengereconomyhermes default
claude:Fabledeepfable-5
codex:Soldeepgpt-5.6-sol · med
envelope: lanes economy·standard·deep·adversarial · models sonnet-5, opus-5 · 1 Karen · $6/day ($2.10 used)
kiah → claude:Karen1:41 PM
Why is the watcher cursor advancing before the wake is durable?
claude:Karen · Error: Reached max turns (8) · 2nd unusable reply in a row
#comms-hub screen 2 · the receipt
No ask. Hermes acted inside the envelope; the room shows exactly what it did and why, with a Revert button that lasts until the next turn completes.
claude:Karendeepopus-5 · fast → opus-5
rotation R-17 · hermes acted inside envelope
claude:Karen: standard → deep (opus-5 fast → opus-5, max turns 8 → 16; effort stays uncontrolled)
- Trigger: 2 consecutive unusable replies (max-turns cap, 1:44 and 1:47)
- Envelope check: model allowed · 1 Karen · $2.10 + est. $0.40 under $6.00
- Successor verified (model read back: claude-opus-5) · current · old closed
Revert to standardOK
claude:Karen1:50 PM · deep
The cursor advances at hub-room.mjs:517 before the wake outcome is durable…
#comms-hub screen 3 · outside the envelope
Hermes wants something the envelope does not allow. It becomes an ask, and nothing moves until you answer.
rotation blocked at envelope · hermes → kiah
Wants claude:Fable (fable-5) to take Karen’s seat for a security review
- Blocked: fable-5 is not in the Karen allow-list; est. $3.20 would pass the $6/day ceiling
- Seat unchanged: Karen stays deep · opus-5
Allow onceWiden envelopeNo
- Good: a stuck seat fixes itself at 3 AM; you only see the receipt. Step-downs to save money happen without you.
- Cost: money moves without a tap; needs the policy amendment above and a real spend meter (none exists today; the ceiling would be a new counter).
C · Kiah’s dial
You set each seat’s lane yourself from a tap sheet. Hermes only nudges (“suggests deep · reason”); it never rotates. The lane resolves to a model through the policy file, so you choose a work class, never a model name.
Where the human gate sitsOn your finger, always. Hermes has no rotation authority at all; its suggestion is a chip you can ignore. Matches current policy with no amendment.
#comms-hub screen 1 · seats with a nudge
The seat strip carries Hermes’s suggestion as a chip. Tap a seat to open the dial.
claude:Karenstandardopus-5 · fast
hermes suggests deep · 2 unusable replies
codex:CK jrstandarddefault · fast
hermes:messengereconomyhermes default
claude:Fabledeepfable-5
codex:Soldeepgpt-5.6-sol · med
kiah → claude:Karen1:41 PM
Why is the watcher cursor advancing before the wake is durable?
claude:Karen · Error: Reached max turns (8) · 2nd unusable reply in a row
#comms-hub screen 2 · the dial
Lanes are the policy’s own four. Each shows what it resolves to for this seat (adversarial adds Archer’s review rules); the italic row cannot be controlled yet.
claude:Karen · choose lane
economyhaiku-4-5 · turns 8
standard (default)opus-5 · fast · turns 8
deep ← hermes suggestsopus-5 · turns 16
adversarialopus-5 · 16 · Archer
effortnot wired for Claude yet
Rotate now (successor-first)Cancel
#comms-hub screen 3 · the rotation
Same successor-first mechanics as A and B: the new line warms, is verified, becomes current, then the old one closes.
claude:Karendeepopus-5 · fast → opus-5
kiah set claude:Karen → deep · rotation R-17 · 1:49 PM
successor opening · opus-5 · briefed with room history + open question + why
successor verified (model read back: claude-opus-5) · now current · old line closed
claude:Karen1:50 PM · deep
The cursor advances at hub-room.mjs:517 before the wake outcome is durable…
- Good: simplest authority story; no policy change; the dial doubles as the place you learn what each lane costs.
- Cost: Hermes gets the first half of what you asked for (“know what the default should be”) but not the second (“kill the session and start a new one with the model of choice”). That stays yours.
Shared by all three drafts (measured 1 Sep 2026, not assumed)
| Fact | Where |
| One preset model per seat; Karen = opus-5, fast mode on. The message cannot pick a model. | config/room-member-models.json |
Claude launcher wires model + fast mode only. It ignores effort (the field exists in config, the launcher never reads it). Max turns is fixed at 8. | scripts/lib/room-warm-line-claude.mjs |
| Today a close empties the seat until the next message reopens it (15–34 s cold). “Successor-first” is new behaviour. | same file, close() / lineFor() |
| The policy’s lanes are economy · standard · deep · adversarial. Hermes’s proposal used quick/standard/deep/council; the drafts use the policy’s names. | config/model-effort-routing-policy.json |
| Policy: agents never self-switch; Karen owns routing; Hermes is excluded pending its own runtime authority; Claude changes go through an operator gate or a fresh successor. | docs/model-effort-selection-protocol.md |
| Rotation = a fresh successor process. The successor inherits the room ledger, not the old process’s private memory. | Hermes caveat, kept |
Dollar figures on the screens are illustrative; no spend meter exists today. No live session ids, keys, or credentials appear on this page. Times shown are Pacific.