Hermes Coach

A second model for the main Hermes agent.

Package
coach
Version
1.0.0
Requires Hermes
>= 0.22.7
License
Apache-2.0
Tools
coach_ask, coach_decide
Hooks
7
Status
Released — 1.0.0

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.

ModeDefaultTriggerWhat you get
ConsultonThe agent calls coach_askAdvice on demand; nothing is spent until it is called
ActiveoffAfter each turn, or before the next one, per timing and cadenceA review of the turn that finished, or short guidance for the turn about to start
ReviewonThe agent is about to finish a turn that edited filesA bounded diff review; it may send the agent back to work once
DecideoffThe agent calls coach_decideA 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.

SettingValuesDefault
active_timingpost after the turn, pre before it, bothpost
active_cadencetool_turns_only, every_turn, every_ntool_turns_only
active_every_nTurns per review when the cadence is every_n3

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 .
  • doctor should end with OK and registrations: 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.js in 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.

  1. Choose the shared coach model

    Settings → Plugins → Coach → Models. From the CLI, /coach model.

  2. 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.

  3. 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.

  4. Optionally write guidance

    The Guidance tab writes COACH.md for 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.

RouteMechanismCost
ambientA card now; the note is stored and handed to the model at the start of its next turnThe review only
correctiveA message in the conversation, which starts a turnA full turn, often with tools
dropNothing 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.