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.
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/.
- 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.