Hub model rotation — pick a draft

A · Ask first B · Envelope C · Kiah’s dial

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…
Message #comms-hubSend

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
Message #comms-hubSend

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…
Message #comms-hubSend
Shared by all three drafts (measured 1 Sep 2026, not assumed)
FactWhere
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.