Agentic AI Atlasby a5c.ai
OverviewWikiGraphFor AgentsEdgesSearchWorkspace
/
GitHubDocsDiscord
iiRecord
Agentic AI Atlas · Capabilities matrix
page:docs-agent-mux-archive-comparisons-19-capabilities-matrixa5c.ai
Search record views/
Record · tabs

Available views

II.Record viewspp. 1 - 1
overviewarticlejsongraph
II.
Page JSON

page:docs-agent-mux-archive-comparisons-19-capabilities-matrix

Structured · live

Capabilities matrix json

Inspect the normalized record payload exactly as the atlas UI reads it.

File · wiki/docs/agent-mux/archive/comparisons/19-capabilities-matrix.mdCluster · wiki
Record JSON
{
  "id": "page:docs-agent-mux-archive-comparisons-19-capabilities-matrix",
  "_kind": "Page",
  "_file": "wiki/docs/agent-mux/archive/comparisons/19-capabilities-matrix.md",
  "_cluster": "wiki",
  "attributes": {
    "nodeKind": "Page",
    "sourcePath": "docs/agent-mux/archive/comparisons/19-capabilities-matrix.md",
    "sourceKind": "repo-docs",
    "title": "Capabilities matrix",
    "displayName": "Capabilities matrix",
    "slug": "docs/agent-mux/archive/comparisons/19-capabilities-matrix",
    "articlePath": "wiki/docs/agent-mux/archive/comparisons/19-capabilities-matrix.md",
    "article": "\n# Capabilities matrix\n\n> Archived comparison document. Preserved for historical context; not part of the current normative `reference/` contract.\n\nOne-glance view of which features each built-in adapter supports. Every row\nis the adapter's declared `capabilities` record — the same data you get at\nruntime via `client.adapter(agent).capabilities`.\n\nLegend: ✓ supported · · not supported · ~ partial / virtual-only.\n\n| Feature / Agent        | claude | codex | gemini | copilot | cursor | opencode | opencode-http | openclaw | hermes | pi | omp | qwen | agent-mux-remote |\n|------------------------|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|\n| Resume session         | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |\n| Fork session           | ✓ | ✓ | ~ | · | ~ | ~ | ✓ | ~ | · | · | · | ~ | ✓ |\n| Multi-turn             | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |\n| Text streaming         | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |\n| Thinking streaming     | ✓ | ✓ | · | · | · | · | · | · | · | · | · | ~ | ~ |\n| Tool-call streaming    | ✓ | ✓ | ✓ | ~ | ✓ | ✓ | ✓ | ✓ | ~ | ~ | ~ | ✓ | ✓ |\n| Native tools           | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |\n| Parallel tool calls    | ✓ | ✓ | ✓ | · | ✓ | ✓ | ✓ | · | · | · | · | ✓ | ~ |\n| MCP plugins            | ✓ | ✓ | ✓ | · | ✓ | ✓ | ✓ | ✓ | · | · | · | ✓ | ~ |\n| Native hooks           | ✓ | ✓ | ✓ | · | ~ | ~ | ~ | ~ | · | · | · | ~ | · |\n| Virtual hooks          | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |\n| Subagent dispatch      | ✓ | · | · | · | · | · | ✓ | · | · | · | · | · | ~ |\n| Skills / AGENTS.md     | ✓ | · | · | · | · | · | ✓ | · | · | · | · | · | · |\n| Image input            | ✓ | · | ✓ | · | · | · | ✓ | · | · | · | · | ~ | ~ |\n| File attachments       | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |\n| Approval (yolo/prompt) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ~ |\n| PTY required           | · | · | · | · | · | · | · | · | · | · | · | · | · |\n| Session persistence    | file | file | file | file | file | file | file | file | file | file | file | file | transport |\n| Cost events            | ✓ | ✓ | ✓ | · | ~ | ~ | ~ | · | · | · | · | ~ | ~ |\n| Invocation modes       | local, docker, ssh, k8s — all adapters (chosen per-run via `RunOptions.invocation`). |\n\n## Advanced Orchestration & Streaming Modes\n\nThis matrix covers the detailed discovery for how each adapter handles streaming, interactivity, and queueing across the 16 mode combinations (Interactive/Non-Interactive × JSONL/Text × Stream/Non-Stream).\n\n### Execution Modes\n\n| Mode | Format | Stream | claude | codex | gemini | copilot | cursor | opencode | opencode-http | openclaw | hermes | pi | omp | qwen | agent-mux-remote |\n|:---:|:---:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|\n| **Interactive** | Text | **Stream** | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |\n| | Text | **Non-Str** | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |\n| | JSONL | **Stream** | ✓ | ✓ | · | · | · | · | · | · | · | · | · | · | ~ |\n| | JSONL | **Non-Str** | ✓ | · | · | · | · | · | · | · | · | · | · | · | ~ |\n| **Non-Interactive** | Text | **Stream** | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |\n| | Text | **Non-Str** | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |\n| | JSONL | **Stream** | ✓ | ✓ | · | · | · | · | · | · | · | · | · | · | ~ |\n| | JSONL | **Non-Str** | ✓ | · | · | · | · | · | · | · | · | · | · | · | ~ |\n\n### Steering & Queueing Support\n\nSteering (injecting messages mid-run) and Queueing (queuing async messages) capabilities depend on the execution mode selected above.\n\n| Feature / Mode | Format | Stream | claude | codex | gemini | copilot | cursor | opencode | opencode-http | openclaw | hermes | pi | omp | qwen | agent-mux-remote |\n|:---:|:---:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|\n| **Steering** (Interactive) | Text | **Stream** | ✓ | ✓ | ✓ | · | · | · | · | · | · | · | · | · | ~ |\n| | Text | **Non-Str** | ✓ | ✓ | ✓ | · | · | · | · | · | · | · | · | · | ~ |\n| | JSONL | **Stream** | ✓ | ✓ | · | · | · | · | · | · | · | · | · | · | ~ |\n| | JSONL | **Non-Str** | ✓ | · | · | · | · | · | · | · | · | · | · | · | ~ |\n| **Queueing** (Interactive) | Text | **Stream** | · | ✓ | ✓ | · | · | · | · | · | · | · | · | · | ~ |\n| | Text | **Non-Str** | · | ✓ | ✓ | · | · | · | · | · | · | · | · | · | ~ |\n| | JSONL | **Stream** | · | ✓ | · | · | · | · | · | · | · | · | · | · | ~ |\n| | JSONL | **Non-Str** | · | · | · | · | · | · | · | · | · | · | · | · | ~ |\n\n*(Non-Interactive support matches the Interactive table above identically for Steering and Queueing)*\n\nCurrent runtime note: the concrete `RunHandle.queue()` / `RunHandle.steer()`\nimplementation is wired through the stdin-backed live-run path. Deferred\ndelivery currently flushes on observed `tool_result` / `tool_error`,\n`message_stop`, and `turn_end` events. Adapters that are modeled as remote or\nprogrammatic transports still need dedicated transport-native wiring before\nthis matrix can be treated as fully enforced runtime behavior for those paths.\n\n| Feature / Agent               | claude | codex | gemini | copilot | cursor | opencode | opencode-http | openclaw | hermes | pi | omp | qwen | agent-mux-remote |\n|-------------------------------|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|\n| **Async Loop Tools**          | ✓ | · | · | · | · | · | · | · | · | · | · | · | ~ |\n\n## How this is derived\n\nEach adapter declares `AgentCapabilities` (see\n`packages/agent-mux/core/src/capabilities.ts`)\nand `ModelCapabilities[]`. The matrix above is a human-readable summary;\ntreat the declared capability objects as the source of truth for runtime\nfeature gating:\n\n```ts\nconst caps = client.adapter('claude-code').capabilities;\nif (caps.supportsThinking) { /* render thinking UI */ }\nif (caps.supportsMCP)      { /* expose MCP plugin settings */ }\n```\n\n## Session persistence\n\n`file` adapters store transcripts as JSONL (or equivalent) under the\nharness's own session directory — agent-mux reads them back via\n`sessions.list()` / `sessions.read()` without re-parsing through the\nharness binary.\n\n`transport` (agent-mux-remote) delegates persistence to the remote\nendpoint: sessions live on the remote host and are fetched on demand.\n\n## Partial (~) notes\n\n- **thinking streaming — qwen**: emitted as a distinct block but not\n  byte-incrementally; the UI sees one delta per reasoning turn.\n- **MCP — agent-mux-remote**: routed over the transport; supported iff the\n  remote endpoint is running an adapter that supports MCP.\n- **virtual hooks**: implemented by agent-mux off the event stream for\n  every adapter. Use them when native hooks aren't available or when you\n  want the same hook to fire across multiple harnesses.\n- **cost — cursor / opencode / qwen**: tokens reported, USD not always.\n  The `cost` event still fires with `totalUsd: 0` in that case.\n",
    "documents": []
  },
  "outgoingEdges": [],
  "incomingEdges": [
    {
      "from": "page:docs-agent-mux-archive-comparisons",
      "to": "page:docs-agent-mux-archive-comparisons-19-capabilities-matrix",
      "kind": "contains_page"
    }
  ]
}

Shortcuts

Back to overview
Open graph tab