Skip to content

The Agent Client Protocol

The Agent Client Protocol (ACP) is the contract between a host (like Nori) and a coding agent. It’s what makes “any agent” possible.

ACP is JSON-RPC spoken over standard input/output between the host and an agent subprocess. The host sends requests — initialize, create or load a session, prompt a turn — and the agent streams back session updates (message chunks, tool calls, edits) as the turn runs. Permission flows the other way: the agent asks the host before privileged actions, and Nori answers according to your approval settings. Nori builds on the official ACP Rust crate (agent-client-protocol).

Because the boundary is a protocol — not a Rust API — an agent can be written in any language and distributed any way (a local binary, npx, bunx, pipx, or uvx) and still plug into Nori. There is deliberately no in-process plugin system; the extension point is ACP itself.

Nori is an ACP host: it launches agents, translates the wire protocol to and from its internal session model, and renders the result. The host side lives in a dedicated library crate, nori-acp-host — agent registry, subprocess spawning, the JSON-RPC connection, and permission plumbing — with a scriptable mock-acp-agent for conformance testing.

this page as markdown: /cli/concepts/acp.md· index for agents: /llms.txt