ACP (IDE agents)
The Agent Client Protocol (ACP) is an open standard that lets editors and IDEs talk to coding agents over JSON-RPC on stdio — the client spawns the agent as a subprocess and streams prompts, tool activity, and permission requests through it. Zed, the JetBrains IDEs, and a growing list of clients (marimo, Toad, VS Code extensions) speak ACP.
apx acp turns the APX super-agent into an ACP agent. Whatever your editor, the agent behind it
is the same one that answers on Telegram, the web panel, and apx code — same engines, same
tools, same memory.
apx acpThe command serves the protocol on stdin/stdout until the client closes the pipe. You never run it
by hand in a terminal — your editor launches it. Like every surface, it is a thin adapter over the
local daemon (auto-started on first use): each prompt becomes a streaming
super-agent turn on the code channel, so ACP sessions get the coding system prompt and the
git/code tool set.
Connecting from Zed
Section titled “Connecting from Zed”-
Install APX globally so
apxis on your PATH. -
Add an
agent_serversentry to your Zedsettings.json:{"agent_servers": {"APX": {"command": "apx","args": ["acp"]}}} -
Open the Agent Panel, pick APX, and chat. Tool calls stream into the panel, and any action that needs confirmation shows Zed’s native Allow / Reject dialog.
What the surface implements
Section titled “What the surface implements”| ACP concept | APX behavior |
|---|---|
initialize | Protocol version 1; declares loadSession: false, no image/audio/embeddedContext prompts, no MCP passthrough |
session/new | Resolves the APC project for the client’s cwd, registers it with the daemon if needed |
session/prompt | Streams a super-agent turn; replies resolve with stopReason: "end_turn" |
session/update | agent_message_chunk for text, tool_call / tool_call_update for tool activity |
session/request_permission | Emitted when APX’s permission mode requires confirmation; Allow/Reject answers the pending action |
session/cancel | Aborts the in-flight turn and resolves it with stopReason: "cancelled" |
Multi-turn context is kept in-process per session: every completed turn feeds the next one as conversation history, so follow-up prompts remember the thread without any extra setup.