⌂ Home ☷ Board

Hermes Client reference pattern for Mission Control

Status: reference note / adapter inspiration, not canonical runtime contract Owner: Luci / Lucienne Reviewed: 2026-05-22 Source repo: https://github.com/lotsoftick/hermes_client Source note: ~/workspace/mission-control/reports/mission-control-hermes-client-source-note.md

Why this exists

hermes_client is a useful concrete implementation of a Hermes web cockpit. It should inform Mission Control's Hermes adapter layer, but it should not replace Mission Control or become a second source of truth.

Mission Control remains responsible for tickets, WAT decisions, runtime_sessions, scheduled work visibility, review evidence, history harvesting, and runtime switch continuity.

Patterns worth borrowing

HermesProfileRuntimeAdapter

Map a UI-visible runtime option to a Hermes profile, but keep these concepts separate:

CliProcessInvocation

Invoke Hermes as an argv array, not as a shell string.

Minimum ledger data for each invocation:

SseTurnStream

A chat/workbench turn may stream stdout to the browser via Server-Sent Events, but streaming is only a display path.

Durable state must still be written to Mission Control before or during the turn:

Browser disconnect behavior must be explicit:

It must never be accidental.

SessionFileReconciler

Hermes session JSON can be used as supporting truth for Hermes-originated turns, but MC remains the workflow source of truth.

Reconciliation should:

CronStateMirror

Hermes cron can be inspected and surfaced, but production scheduled work remains in MC/Luci scheduler unless a separate architecture decision changes that.

Allowed pattern:

Not allowed by default:

PtySetupWorkbenchCard

A PTY-backed setup drawer/card is useful for real runtime setup flows that are hard to reimplement as forms.

Required safeguards:

Security defaults

Do not copy hermes_client's local-app defaults into production MC unchanged.

Mission Control defaults should be:

Integration posture

Use this reference for the Hermes-specific adapter slice only.

Before code changes:

  1. Add/confirm the MC runtime adapter contract.
  2. Run runtime-profile inventory/lint.
  3. Select a low-risk Hermes profile/session smoke test.
  4. Verify runtime_sessions and MC history capture the invocation correctly.
  5. Run Tessa validation if any Workbench/UI surface changes.
  6. Run Atlas-style signoff if canonical MC runtime docs change.

Non-goals