Miadi-Agent
The agentic runtime that lets Miadi operate as a living, conversational service. Hermes-Agent is the technical runtime boundary; Miadi-Agent is the product identity it is becoming.
User · Surfaces · Agent · Domains
One picture before the architecture: the user reaches the Miadi-Agent through several access surfaces. The agent holds session handles — the gold-weighted threads — and routes them into the domains (repositories, issues, and runtimes grouped by project context). The agent is the bridge, not the destination.
One session can target multiple domains over its lifetime — that's the "walking with continuity" promise. See the glossary on the Navigator page for the full domain vocabulary.
A stable runtime layer
Miadi-Agent is not a duplicate of an old agent folder. It is a stable runtime layer that can converse with the user inside the Miadi space, execute delegated work reliably, preserve continuity across sessions, and remain replaceable as a forked runtime boundary — without becoming tangled in app code.
A working session has a name, not a location. Once named, you attach it from any terminal, any device — the desktop pane, a fresh window, the phone — and every attached client sees the same live byte stream as it happens. The original shell may be running in window 47 of 120; you never have to find it. Long-running agents (claude-code, gemini, copilot) live inside named sessions and survive detach without losing state.
The runtime lives under runtime/hermes-agent. The product and spec name is miadi-agent. The rename happens when the launch contract and fork policy are stable — not before.
Who owns what
- •orchestration entrypoints
- •routing & service integration
- •issue/spec traceability
- •persistence & product concerns
- •agent bootstrap
- •task execution lifecycle
- •session continuity
- •provider dispatch shim
- •logs & trace emission
- •reusable orchestration recipes/plugins
- •cross-provider workflow composition
- •parity rules for coding agents
- •contribution & maintenance flows
The platform speaks A2A envelopes; the runtime executes them and emits trace + continuity payloads; the orchestration-kit chooses recipes the platform applies. The provider shim is the runtime's boundary with claude-code, gemini, and copilot.
Contract surface
Two excerpts from the canonical JSON schemas in rispecs/tide-runtime/deep-dive-review/schemas/. These are the shapes the runtime accepts and emits.
{
"schemaVersion": "a2a-task-request.v1",
"taskId": "task-2026-05-12-08c4",
"intent": "string",
"instructions": "string",
"domainId": "miadi",
"continuity": { /* SessionContinuity */ },
"constraints": {
"allowedActions": [
"read_files","write_files",
"run_commands","spawn_subagents",
"send_terminal_input",
"focus_domain","use_mcp_tools"
],
"requiresApprovalFor": [
"write_files","run_commands",
"spawn_terminal"
],
"timeBudgetSeconds": 600,
"maxOutputBytes": 1048576
},
"expectedResult": {
"kind": "analysis|patch|artifact",
"acceptanceCriteria": [ ... ]
}
}{
"schemaVersion": "session-continuity-payload.v1",
"parentSessionId": "string",
"childSessionId": "string",
"traceId": "string",
"activeDomainId": "miadi",
"conversationSummary": "string",
"openWork": [{
"id": "w-1",
"description": "string",
"status": "pending|in_progress|blocked",
"domainId": "miadi"
}],
"rispecRefs": [
"rispecs/tide-runtime/..."
],
"approvalState": {
"mode": "observer|active-controller",
"pendingProposalIds": ["prop-..."]
}
}Current reality → Desired outcome
Each row holds two truths at once. The tension between them is what advances the work — not a gap to close.