Reviewed: 2026-05-22 13:24 SAST
Reviewer: Lucienne
Scope: Mission Control on Luci (/home/lucienne/workspace/mission-control) + Luci control-room docs (/home/lucienne/workspace/agent-control-room)
Tracking ticket: MC-3898
Status: implementation brief / ready for coder lane; no live runtime changes made by this brief
Mission Control already knows about Hermes runtime profiles. The next safe step is to make that integration more honest and robust before anyone relies on it for production work.
In user terms: when you pick “Hermes Codex”, “Hermes Kimi”, “Hermes GLM”, etc. inside Mission Control, MC should be able to show exactly what it is going to run, where it will run, how the output comes back, and what safety boundaries apply. Hermes remains a replaceable engine underneath MC; Mission Control remains the cockpit and source of truth.
Correction / boundary from Elmar on 2026-05-22: do not let this slice turn the wider Mission Control redesign into a Hermes-specific architecture. The adapter should improve one runtime family, but the control-plane contract must remain harness-independent. MC owns tickets, routing, evidence, history, status, and user intent; Hermes, Claude Code, Codex CLI, Gemini CLI, direct scripts, and future runtimes are replaceable harnesses beneath that contract.
Evidence inspected read-only:
models.py::_runtime_profile_catalog() already contains Hermes profiles:hermes_grokhermes_codexhermes_glmhermes_kimihermes_minimaxpersistent_luci.py::_command_for_profile() already has a cli == "hermes" branch.ticket_runtime.py starts ticket tmux sessions, records runtime_sessions, sends prompts, and harvests pane output.mc_tmux.py launches tmux sessions and records pane logs./home/lucienne/.local/bin/hermes/home/lucienne/.hermes/hermes-agent/venv/bin/hermesHermes Agent v0.14.0 (2026.5.16)hermes chat --help confirms these flags exist:--provider--model--source--pass-session-id--accept-hooks--yolo--skills--toolsetsmodels.preflight_runtime_profile() reports the Hermes runtime profiles as available.The current Hermes command branch builds this kind of command:
hermes --yolo --accept-hooks chat --source mc-runtime --pass-session-id --provider ... --model ...
That is structurally close, but not yet strong enough as a governed adapter contract.
Key risks:
hermes, not /home/lucienne/.local/bin/hermes..bashrc.Safer contract: resolve the executable path once and record it in runtime metadata.
Hermes profile isolation is not explicit yet.
luci-codex, luci-kimi, luci-glm, etc.Until then, the UI/docs must label these as “Hermes default profile with provider/model override,” not fully isolated Hermes homes.
No structured Hermes session reconciliation exists yet.
Borrow from lotsoftick/hermes_client: read Hermes session files only as an import/reconciliation channel, never as the primary source of truth.
No explicit adapter metadata is captured for Hermes-specific invocation details.
Files likely involved:
/home/lucienne/workspace/mission-control/models.py/home/lucienne/workspace/mission-control/persistent_luci.py/home/lucienne/workspace/mission-control/ticket_runtime.py/home/lucienne/workspace/mission-control/tests/Acceptance:
resolve_cli_executable("hermes"), with preferred path /home/lucienne/.local/bin/hermes and PATH fallback.Add optional catalog fields for Hermes profiles:
"hermes_profile": "default",
"profile_isolation": "default_profile_with_provider_model_override",
Later, when dedicated Hermes profiles are created, change those to:
"hermes_profile": "luci-codex",
"profile_isolation": "dedicated_hermes_home",
Acceptance:
When MC starts a Hermes runtime session, record metadata like:
{
"adapter": "HermesProfileRuntimeAdapter",
"command_contract_version": 1,
"executable": "/home/lucienne/.local/bin/hermes",
"argv_redacted": ["hermes", "--yolo", "--accept-hooks", "chat", "--source", "mc-runtime", "--pass-session-id", "--provider", "openai-codex", "--model", "gpt-5.5"],
"mc_runtime_profile": "hermes_codex",
"hermes_profile": "default",
"profile_isolation": "default_profile_with_provider_model_override",
"source": "mc-runtime",
"cwd": "/home/lucienne/workspace/PKA",
"pane_log_path": "/home/lucienne/workspace/logs/...",
"session_reconciliation": "not_enabled"
}
Acceptance:
Add a documented placeholder for SessionFileReconciler but do not build full sync until the adapter launch contract is stable.
Acceptance:
Minimum tests:
_command_for_profile() for hermes_codex uses the resolved executable or a clearly wrapped login shell that guarantees PATH.Optional smoke test after code review, only if safe:
hermes_codex or hermes_kimi.lotsoftick/hermes_client into MC.This slice is not about “coding a new AI.” It is about making the cockpit honest:
Proceed with this as the next coder-lane slice before adding deeper Hermes session sync or a PTY setup workbench. The adapter needs honesty and metadata first; then we can safely test Hermes as a first-class Mission Control runtime.