What Coach is
Coach runs a second model beside the one driving your session. The main agent can ask it for advice mid-task, ask for a plan review before starting, or hand it a finished piece of work. Two optional modes go further: one reviews a turn automatically, the other gates the agent’s claim that it is done.
The design goal is that Coach stays cheap enough to leave on. It sends a bounded ledger rather than a transcript, makes one model call per review, and delivers advice that usually costs tokens instead of a whole extra turn.
The four modes
Every mode uses one shared model unless you give it its own. Only Consult and Review are on by default.
| Mode | Default | Trigger | What you get |
|---|---|---|---|
| Consult | on | The agent calls coach_ask | Advice on demand; nothing is spent until it is called |
| Active | off | After each turn, or before the next one, per timing and cadence | A review of the turn that finished, or short guidance for the turn about to start |
| Review | on | The agent is about to finish a turn that edited files | A bounded diff review; it may send the agent back to work once |
| Decide | off | The agent calls coach_decide | A typed choice with a confidence, not prose |
Consult
The agent calls coach_ask with a question, an intent (advice, plan, or review), and optional context. It gets advice back as the tool result and is asked to relay it. Because the call is explicit, a consult costs nothing until the agent decides it needs one.
Active
Active is optional and off by default. Its timing is a setting: post reviews a turn after it finishes, pre steers the turn about to start, and both does one of each. It sees messages and one-line tool cards only — never file contents — and its prompt says so, so it does not report its own blind spot as a defect. The default cadence ignores turns that made no tool calls.
| Setting | Values | Default |
|---|---|---|
active_timing | post after the turn, pre before it, both | post |
active_cadence | tool_turns_only, every_turn, every_n | tool_turns_only |
active_every_n | Turns per review when the cadence is every_n | 3 |
Pre-turn guidance is the cheap half: it runs before the agent works, sees the user’s message for the turn ahead, and answers with a few lines of steering rather than a review. The call is capped at ten seconds (or worker_timeout_s, whichever is lower) and fails open, so a slow coach delays a turn instead of failing it. Choosing pre alone turns the post-turn review off, so the mode never bills twice for the same turn.
Review
Review is the completion gate. When the agent is about to claim it is done with a turn that edited files, Coach assembles the turn’s diff and has the second model look for defects. A parsed blocker can hold the completion once per request; everything else becomes a card and a note.
The review covers the whole turn, not just what is still uncommitted. The plugin records HEAD when the turn starts, so commits made before the “done” claim are still part of the evidence.
Decide
Decide answers a fork with a machine-readable choice instead of prose: {decision, confidence, probabilities, gate, rationale}. gate is act at or above the confidence threshold and escalate below it; an unrecognised answer also escalates. It is off by default because it needs its own API key.
Install
You need a Hermes build with the plugin APIs Coach uses (ctx.llm, ctx.inject_message, ctx.register_hook, ctx.register_tool) and a provider already authenticated in Hermes.
cd /path/to/Hermes-Coach
ln -sfn "$PWD" ~/.hermes/plugins/coach
hermes plugins enable coach
hermes plugins doctor . doctorshould end withOKandregistrations: 2 tool(s), 7 hook(s).- The Desktop settings page is opt-in: enable it in Settings → Plugins → Coach, then use ⌘K → Reload desktop plugins if the page does not appear.
- Installed as a symlink, saving
desktop/plugin.jsin the checkout hot-reloads the page.
To remove it: hermes plugins disable coach, then rm ~/.hermes/plugins/coach.
First run
A fresh install is deliberately unconfigured. No model is called until you pick one.
Choose the shared coach model
Settings → Plugins → Coach → Models. From the CLI,
/coach model.Pick a model that differs from your main one
Coach refuses a coach running the primary model, so the second opinion is not the same blind spot.
Grant model overrides if you set per-mode models
Press Grant on the Status tab, or run
/coach grant, so the plugin may pass its own provider and model.Optionally write guidance
The Guidance tab writes
COACH.mdfor the current project, or a short global file applied everywhere.
How advice reaches the agent
A finding is routed by policy. The route decides whether advice is a quiet note for the next turn or something that starts a new turn immediately.
| Route | Mechanism | Cost |
|---|---|---|
ambient | A card now; the note is stored and handed to the model at the start of its next turn | The review only |
corrective | A message in the conversation, which starts a turn | A full turn, often with tools |
drop | Nothing delivered | — |
The default policy is severity: blockers start a turn so the agent can fix them; notes and concerns become a card and reach the model on its next turn. There is also ambient (a card now, no extra call) and corrective (every note starts a turn).
The review ladder has four values besides none: nit (optional), concern (a defect it can point at), blocker (must not ship), and unverifiable — the evidence block itself was incomplete. unverifiable is a coverage limit, never a claim about the work: it never holds a completion and never starts a turn.
Every piece of advice is also posted as a card in the conversation, so the coach’s work is visible even when the agent does not relay it. Cards can be turned off with delivery_show_cards; the log and /coach output stay.