Host integration layers

Ver fonte no GitHub

AWR is a host-agnostic work runtime. It owns project facts, claims, checkpoints and evidence. A coding agent owns its model, UI and native conversation. The product boundary is the shared CLI/MCP contract, not any one editor or agent.

Use three layers. Do not treat a deeper layer as a new product identity.

LayerPromiseFormWhen to add
L0 — generic contractAny host that can run a CLI or speak MCP uses the same project stateSession workflow, MCP tools, awr client bind --client genericDefault. This is the supported product.
L1 — host noteA named host was checked against L0Short page: merge paths, native IDs, dated verification, limitsAfter a real host check. Record diffs only.
L2 — optional adapterNative lifecycle events can drive AWR checkpointsawr client install and a documented hook dialectOnly when hooks are stable and someone maintains them. Today: Codex.

L0 is complete enough to observe work, start/resume sessions and persist checkpoints. L1 does not add runtime features. L2 does not make AWR that host's runtime.

What AWR owns

  • Source-backed goals, work, acceptance and evidence
  • Sessions, claims, checkpoints and operation receipts
  • MCP tools and the CLI, including shared Streamable HTTP

What the host owns

  • Models, agent UI, native conversation IDs and compaction
  • Whether MCP is stdio, HTTP or absent
  • Whether native hooks exist. If they do not, operators checkpoint manually.

Provider and model strings stored by AWR are labels. They do not select, start or configure a coding agent.

Identity

--client generic is the L0 identity. Pair it with the host's conversation ID (--external-session). --session attaches that conversation to an active AWR session. --from-session resumes a predecessor and binds the new conversation to the successor.

--client is required on every client subcommand. No dialect is a default, so omitting it fails loudly with a usage error instead of silently assuming one. codex and kimi are documented native dialects for hook field shapes. They are not the centre of the product. Unknown --client values are rejected; do not add a new enum for every editor.

Compatibility: hook commands written by awr client install already pin --client codex explicitly, so installed adapters are unaffected. Operator scripts that omitted --client must now name their dialect; existing bindings, dedup keys and provider metadata are unchanged because explicit --client codex resolves to the same identity as before.

Host names travel inside the external session ID, not the client enum: --client generic --external-session cursor:8f3a…. The <host>: prefix keeps identities distinct per host without a schema change. Binding records are append-only and reject unknown fields, so a new host column would make new events unreadable by older binaries; the namespaced ID avoids that. Use --provider and --model on session start/resume for display labels.

awr client install is L2. Unsupported hosts are expected to stay on L0.

Current host notes

HostLayerPageWhat it adds beyond L0
Any CLI or MCP clientL0Session workflowShared commands and bind rules
Grok BuildL1Grok noteProject MCP add, native --continue / --resume, dated check
Kimi CodeL1Kimi note.kimi-code/mcp.json, native session flags, dated check
CodexL2Codex adapter.codex MCP merge, client install hooks, AGENTS snippet
Named adapters (WS-024)controlledNamed agent hostCapability negotiation, L0 report, Codex + Claude Code, subtask parallelism
Claude Code (WS-024)namedClaude Code adapterStatus/reconnect/forensics; not auto-startable
Team MCP · Codex (TMCP-041)remote Teamteam-mcp-codex-cli.mdHTTPS Team MCP natural workflow for codex_cli
Team MCP · Claude Code (TMCP-041)remote Teamteam-mcp-claude-code.mdHTTPS Team MCP natural workflow for claude_code
Team Web entry (WS-044)browser / Inspectorteam-web-entry.mdCookie Web entry distinct from MCP bearer; Team collaboration loop
CursorL1Cursor note.cursor/mcp.json, type: stdio, source-built grouped MCP, Cloud Agent HTTPS
Claude Code, Windsurf, …L0Session workflowNone needed: --client generic with a host:-prefixed conversation ID

Application hosts that invoke awr over argv follow the host application contract and host workflow. That is a program integration, not a coding-agent L1 note.

Verification

Configuration, a generated hooks file and a local CLI fixture are not native activation, MCP tool invocation or business acceptance. An L1 note must say what was actually called and on which host version. An L2 adapter must keep activation_verified: false until a live trigger and checkpoint receipt exist.

Adding another host

  1. Run the L0 session workflow against a disposable project.
  2. Connect MCP if the host has it; call awr_project_status and confirm the project identity before any mutation.
  3. If that is enough for operators, stop. No new page is required.
  4. If merge paths or native flags are easy to get wrong, add an L1 page that links here and records only the diff plus a dated check.
  5. Do not copy the session tutorial into the host page.
  6. Do not add L2 unless native hooks have a stable envelope and a maintainer.

Cursor, Claude Code, Windsurf and similar hosts should enter at L0 or L1. They do not need a Codex-shaped installer to “count” as supported. Cursor MCP merge paths are an L1 note.

Team MCP authority notes

TopicPage
Delegation ∩ execution auth (TMCP-030)delegation-execution-auth.md
PR delivery ∩ review/complete (TMCP-031)pr-delivery-review.md
Independent deploy + member handoff (TMCP-041)team-deploy-pack.md
Team MCP · Codex codex_cli (TMCP-041)team-mcp-codex-cli.md
Team MCP · Claude Code claude_code (TMCP-041)team-mcp-claude-code.md
Team MCP BIZ acceptance (TMCP-051)../reference/team-mcp-biz-acceptance.md