Skip to main content
This guide assumes familiarity with Axons and the Broker architecture.
The examples on this page use the object-oriented SDK surface: AsyncRunloopSDK in Python and RunloopSDK in TypeScript.

Overview

ACP is the Agent Client Protocol, a JSON-RPC based protocol for communication between clients and AI coding agents. Broker spawns an ACP-compatible subprocess and exchanges bidirectional JSON-RPC messages over piped stdio. For the full specification and official TypeScript SDK:
npm install @agentclientprotocol/sdk
Open source agents that support ACP include OpenCode and Goose.

Broker mount configuration

Create a devbox with a broker_mount to bind an Axon stream to the ACP adapter:
{
  "type": "broker_mount",
  "axon_id": "<axon-id>",
  "protocol": "acp",
  "agent_binary": "opencode",
  "launch_args": ["acp"]
}
FieldTypeDescription
typestringMust be broker_mount
axon_idstringRequired. The Axon stream Broker reads from and writes to
protocolstringMust be acp
agent_binarystringRequired. Binary to launch for the ACP agent
launch_argsstring[]Optional. Extra arguments passed to the agent process, such as ["acp"]

How Broker uses ACP

  1. Broker launches your registered binary
  2. Your client initializes and sets up the agent for the interaction
  3. Your client initiates the agent by publishing user.message to the Axon
  4. Broker forwards that message as an ACP turn/start request
  5. Agent output streams back through Axon as turn.acp.<update_type> events
Broker auto-approves ACP permission requests because the agent runs in a sandboxed Devbox environment.
Full examples coming soon.