Agent systems now have a protocol for every seam: editor to agent, agent to tools, agent to screen, host to clients. Paratenic implements one of them in full, relays another, projects two for presentation and leaves one alone on purpose.
Map
Each protocol owns one seam
Fig. V.1Only one edge carries authority over a session: AHP, between a client and its host.
Compared
Shape, transport and who holds the state
Protocol
Connects
Transport
State lives in
In Paratenic
AHP
many clients ↔ one host
JSON-RPC over WebSocket
the host: snapshots, ordered actions, pure reducers
implemented in full, 0.8
ACP
one editor ↔ one agent
JSON-RPC over stdio, usually to a process the editor launched
the agent process
not spoken
MCP
an agent ↔ tool and context servers
JSON-RPC over stdio or HTTP
each server
relayed through AHP side channels
AG-UI
an agent run → a frontend
an event stream; transport-agnostic
the frontend, derived
projected from AHP in Culture
A2UI
declarative UI → a component catalogue
carried inside another stream
the rendering client
validated surfaces, v0.9.1
Pi RPC
a controller ↔ one Pi runtime
framed JSON lines
Pi
only Paratenic’s isolated test harness
Backend
a runtime ↔ Paratenic
JSON lines over an owner-private Unix socket
split: AHP state here, execution in the runtime
Paratenic’s own, versions 1–14
AHP 0.8
All of it, on the official types
Fig. V.2Drawn from the same inventory the conformance test checks: an omission, a duplicate or an unknown entry fails the build.
No parallel models. Wire and state types come from ahp-types, reducers from ahp, and acceptance tests drive the official ahp-ws client. All three are pinned to 0.8.0 and will move together.
Capabilities are earned. An optional operation is exposed only when the session’s backend advertises it; otherwise the client gets a standard AHP error. Non-advertisement is conformance, not a fallback.
What that covers. Root, session and chat channels; multiple chats with forks and side chats; elicitation; tool and result confirmations; client-provided tools; PTY terminals with claims and scrollback; session-root-confined file resources and watches; changesets and annotations; OTLP relay; provider authentication.
Not targeted. AHP 0.9 additions such as automation channels and chat/turnResume.
AG-UI and A2UI
Projections can show, never decide
Fig. V.3AG-UI’s run-interrupt model is not AHP’s in-turn input model, so an AG-UI resume is accepted only as a translated AHP action.
AG-UI is a convenient shape for frontends: runs, streamed messages, reasoning and tool calls. Culture’s paratenic-ag-ui crate derives those events from AHP, with ids computed from host, chat and turn, and throws the projection away on reconnect. A2UI is presentation data: Culture validates a surface against a catalogue it owns, renders it, and turns a user’s action into an ordinary AHP command carrying the original host, session, chat and request identities. Neither can settle an input, a tool or a turn.
MCP
Tools stay with the runtime
A runtime lists its MCP servers when it registers. Paratenic publishes each as an official ready customization with an opaque mcp:// channel, and a client can then send MCP requests through AHP to the runtime that owns the server.
Allowlist. The capabilities the runtime advertised are the only methods allowed; MCP initialize is always refused.
Verbatim. Request bodies pass through unchanged, and the caller’s own JSON-RPC id is restored on the reply.
Isolated. At most 16 MCP requests in flight per client connection and 128 pending in all, on their own task set, so a slow tool never stalls the ordered AHP stream.
Backend protocol
The protocol runtimes speak to the host
Fig. V.4Every version is still accepted. A backend keeps the version it negotiated, and a host never sends it a frame from a later one.
The live-backend protocol is deliberately small and neutral: UTF-8 JSON objects, one per line, at most 1 MiB, on an owner-private Unix socket. It describes sessions, providers, commands and events, and nothing about any particular runtime or orchestrator. The full specification is published with this site.
ACP
Left alone on purpose
ACP solves a different problem well: one editor driving one agent it launched. Paratenic’s sessions already exist and already have a human somewhere else, so there is no editor to own them. Where a runtime exposes an ACP stream, Paratenic’s plan allows it only as a parity check — never as a second path for commands.