You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Agent OS architecture diagram shared by maintainers assigns a different harness per pipeline stage:
Interview → Codex
AC Tree / Execute → OMX
Evaluate → Claude Code (CC)
Wonder / Reflect → Hermes
PR #505 introduced an opt-in orchestrator.runtime_profile setting but
ships only the Codex worker mapping for Phase 1; OpenCode, Hermes,
Claude Code, and LiteLLM mappings are explicitly deferred ("matching the
staging in the design discussion on #488").
This issue extends runtime_profile from a single backend slot to a per-stage map, so the diagram's stage→harness assignment becomes a
real configuration surface. It is the first concrete consumer of the Mesh
RFC (#511) at the single-installation layer (S3 — Multi-harness Parity in
RFC #476).
This is not the Mesh itself (cross-runtime IPC). It is the binding
table the Mesh and the orchestrator both read.
Scope
Configuration surface
[orchestrator.runtime_profile]
default = "claude_code"
[orchestrator.runtime_profile.stages]
interview = "codex"execute = "opencode"# OMX in the diagramevaluate = "claude_code"reflect = "hermes"
default keeps today's single-backend behavior for installs that
don't opt in.
stages.* is additive: any unset stage falls back to default.
The list is closed — adding a new stage requires a justified PR (per
the same narrow-membership commitment as AgentRuntimeContext).
Resolution rule
At workflow entry, the orchestrator resolves the active stage and
selects the runtime via runtime_profile.stages.get(stage, default).
The chosen runtime is recorded on the AgentProcess (M6) as runtime_id, and emitted in control.directive.emitted as part of
the extra payload so the journal answers "which harness ran which
stage?" without log inspection.
Setup-time validation: each referenced runtime must be installed and
pass the existing ouroboros mcp doctor (feat(cli): add 'ouroboros mcp doctor' diagnostic command #445) check; otherwise the
setting is rejected at startup with a clear error message rather
than failing mid-workflow.
Diagnostics: ouroboros mcp doctor extends to print the resolved
stage→runtime table for the current install.
Stage-Runtime mapping — runtime_profile.{interview,execute,evaluate,reflect}
Context
The Agent OS architecture diagram shared by maintainers assigns a
different harness per pipeline stage:
PR #505 introduced an opt-in
orchestrator.runtime_profilesetting butships only the Codex
workermapping for Phase 1; OpenCode, Hermes,Claude Code, and LiteLLM mappings are explicitly deferred ("matching the
staging in the design discussion on #488").
This issue extends
runtime_profilefrom a single backend slot to aper-stage map, so the diagram's stage→harness assignment becomes a
real configuration surface. It is the first concrete consumer of the Mesh
RFC (#511) at the single-installation layer (S3 — Multi-harness Parity in
RFC #476).
This is not the Mesh itself (cross-runtime IPC). It is the binding
table the Mesh and the orchestrator both read.
Scope
Configuration surface
defaultkeeps today's single-backend behavior for installs thatdon't opt in.
stages.*is additive: any unset stage falls back todefault.Stage enumeration
interview,execute,evaluate,reflect.the same narrow-membership commitment as
AgentRuntimeContext).Resolution rule
selects the runtime via
runtime_profile.stages.get(stage, default).AgentProcess(M6) asruntime_id, and emitted incontrol.directive.emittedas part ofthe
extrapayload so the journal answers "which harness ran whichstage?" without log inspection.
Per-runtime mapping follow-ups
workerprofile mapping; this issue'sPRs add four parallel slices:
feat(runtime_profile): add OpenCode mappingfeat(runtime_profile): add Hermes mappingfeat(runtime_profile): add Claude Code mappingfeat(runtime_profile): add LiteLLM mappingValidation
pass the existing
ouroboros mcp doctor(feat(cli): add 'ouroboros mcp doctor' diagnostic command #445) check; otherwise thesetting is rejected at startup with a clear error message rather
than failing mid-workflow.
ouroboros mcp doctorextends to print the resolvedstage→runtime table for the current install.
Backward compatibility
runtime_profile=Nonepreserves today's behavior exactly(same guarantee as feat(orchestrator): Agent OS runtime_profile (Codex backend, supersedes #488) #505).
_build_commandpaths unchanged unless a stage isexplicitly mapped to a different runtime.
Non-goals
issue [RFC] MCP Mesh wire format & Coordinator handshake (sub-RFC of #476) #511).
Tier-3 enhancement, gated by evidence).
Acceptance
runtime_profile.stagesconfig surface defined and documentedAgentProcesscontrol.directive.emittedpayload includes the resolvedruntime_idfor stage-relevant transitionsmappings) merged or referenced as separate issues
ouroboros mcp doctorprints the active stage→runtime tableruntime_profile=Nonebehavior is unchangedcorrect
runtime_idper stage in the EventStoreDependencies
Introduce ControlBus on AgentRuntimeContext for control.directive.emitted #515 (ControlBus — emits the resolved runtime), M6 AgentProcess issue
(carries
runtime_id)Parity)