Rust SDK for ACP clients and agents.
See the code
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 the rmcp MCP 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. Draft protocol v2 supports the same two attachment scopes
when both unstable_protocol_v2 and unstable_mcp_over_acp are enabled:
Proxy.v2().with_mcp_server(...) injects a global declaration into each
supported session setup request, while
V2SessionBuilder::with_mcp_server(...) attaches a server to one new session
and V2ResumeSessionBuilder::with_mcp_server(...) attaches one while resuming.
With unstable_session_fork, V2ForkSessionBuilder::with_mcp_server(...)
attaches one while forking. Successful v2 attachments remain active for the
connection lifetime, and all three builders expose on_proxy_session_start to
forward proxied setup without coupling later session events to that response.
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.md/.Client.builder(), Agent.builder(), and Proxy.builder() remain stable-v1
entry points; their .v2() counterparts select the draft-v2 API. With
unstable_protocol_v2, use Proxy.protocol_router() to expose separate strict
v1 and v2 proxy implementations as one component. Custom raw routing
infrastructure can use without_acp_version_guard.
acp-kotlin – supports JVM, other targets are in progressagent-client-protocol - See the stable-v1 agent and client, or the draft-v2 agent and client examples@agentclientprotocol/sdk - See examples/Pull requests should intend to close an existing issue.
By contributing, you agree that your contributions will be licensed under the Apache 2.0 License.
(top 30 of 32)
Rust
99.0%
HTML
1.0%
Rust SDK for ACP clients and agents.
See the code
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 the rmcp MCP 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. Draft protocol v2 supports the same two attachment scopes
when both unstable_protocol_v2 and unstable_mcp_over_acp are enabled:
Proxy.v2().with_mcp_server(...) injects a global declaration into each
supported session setup request, while
V2SessionBuilder::with_mcp_server(...) attaches a server to one new session
and V2ResumeSessionBuilder::with_mcp_server(...) attaches one while resuming.
With unstable_session_fork, V2ForkSessionBuilder::with_mcp_server(...)
attaches one while forking. Successful v2 attachments remain active for the
connection lifetime, and all three builders expose on_proxy_session_start to
forward proxied setup without coupling later session events to that response.
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.md/.Client.builder(), Agent.builder(), and Proxy.builder() remain stable-v1
entry points; their .v2() counterparts select the draft-v2 API. With
unstable_protocol_v2, use Proxy.protocol_router() to expose separate strict
v1 and v2 proxy implementations as one component. Custom raw routing
infrastructure can use without_acp_version_guard.
acp-kotlin – supports JVM, other targets are in progressagent-client-protocol - See the stable-v1 agent and client, or the draft-v2 agent and client examples@agentclientprotocol/sdk - See examples/Pull requests should intend to close an existing issue.
By contributing, you agree that your contributions will be licensed under the Apache 2.0 License.
(top 30 of 32)
Rust
99.0%
HTML
1.0%