The Agent Client Protocol (ACP) standardizes communication between code editors (interactive programs for viewing and editing source code) and coding agents (programs that use generative AI to autonomously modify code).
Learn more at agentclientprotocol.com.
This repository is the official Rust SDK for ACP. It provides crates for building clients, agents, and proxies, plus a conductor that orchestrates chains of proxies between an editor and an agent so that behavior can be extended without modifying the agent itself.
Core SDK
agent-client-protocol– Roles (Client, Agent, Proxy, Conductor), connection builders, handlers, and protocol types.agent-client-protocol-http– HTTP/SSE and WebSocket transports.agent-client-protocol-rmcp– Integration with thermcpMCP SDK.agent-client-protocol-derive– Derive macros used by the core crate.
Native MCP-over-ACP support is currently opt-in through the core crate's
unstable_mcp_over_acp feature. Standalone MCP servers need no ACP transport
feature; the rmcp integration exposes a matching passthrough feature when those
servers are attached to ACP. Stable protocol v1 supports per-session and global
proxy attachment. Per-session attachment through the draft V2SessionBuilder
is also available when both unstable_protocol_v2 and
unstable_mcp_over_acp are enabled. Successful v2 attachments remain active
for the connection lifetime; global proxy attachment and proxy-session helpers
remain v1-only.
Proxy orchestration
agent-client-protocol-conductor– Binary and library that manages chains of proxy components.agent-client-protocol-polyfill– Compatibility proxies, including adapting native MCP-over-ACP declarations to HTTP for agents that cannot consume them directly.agent-client-protocol-trace-viewer– Interactive sequence-diagram viewer for conductor trace files.
Patterns, examples, and testing
agent-client-protocol-cookbook– Practical patterns for clients, agents, and proxies, rendered as rustdoc.agent-client-protocol-test– Shared test utilities and fixtures.yopo– "You Only Prompt Once", an example client.
- API reference for individual crates is on docs.rs/agent-client-protocol.
- Design and architecture documentation lives in the mdbook at agentclientprotocol.github.io/rust-sdk. Source is in
md/. - Draft protocol v2 setup, version-typed connections, and high-level session usage are covered in Protocol V2.
- Protocol schema and documentation
- Agents
- Clients
- Official Libraries
- Kotlin:
acp-kotlin– supports JVM, other targets are in progress - Rust:
agent-client-protocol- See the agent and client examples - TypeScript:
@agentclientprotocol/sdk- See examples/
- Kotlin:
- Community Libraries
Pull requests should intend to close an existing issue.
- Bug Reports: If you notice a bug in the protocol, please file an issue and we will be in touch.
- Protocol Suggestions: If you'd like to propose additions or changes to the protocol, please start a discussion first. We want to make sure proposed suggestions align well with the project. If accepted, we can have a conversation around the implementation of these changes. Once that is complete, we will create an issue for pull requests to target.
By contributing, you agree that your contributions will be licensed under the Apache 2.0 License.