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-tokio– Tokio utilities for spawning agent processes and wiring stdio transports.agent-client-protocol-rmcp– Integration with thermcpMCP SDK.agent-client-protocol-derive– Derive macros used by the core crate.
Proxy orchestration
agent-client-protocol-conductor– Binary and library that manages chains of proxy components.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/.
- Schema
- Agents
- Clients
- Official Libraries
- Kotlin:
acp-kotlin– supports JVM, other targets are in progress - Rust:
agent-client-protocol- See examples/agent.rs and examples/client.rs - 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.