ACP SDKs and libraries
Do not hand-roll JSON-RPC framing unless you are writing a new language binding. Official SDKs exist for both the client and agent sides.
TypeScript SDKOfficial SDKs
Start here unless you have a language constraint.
Community libraries
Useful, but check how closely they track the current schema. Official list: agentclientprotocol.com/libraries/community.
How to choose
TypeScript / JavaScript
Use @agentclientprotocol/sdk. The old AgentSideConnection / ClientSideConnection classes are deprecated in favor of agent() and client().
Rust
Use agent-client-protocol for runtime APIs and agent-client-protocol-schema for wire types. Zed itself uses this crate. Draft v2 is opt-in.
Python
agent-client-protocol on PyPI: Pydantic models, async agent/client bases, and examples including a Gemini CLI bridge.
JVM
Java SDK plus kotlin-sdk (JVM first, other targets in progress). JetBrains Koog also has an ACP integration.
v2 in SDKs
Rust crate 2.x can expose draft v2 behind unstable_protocol_v2 / .v2() callbacks. Keep production traffic on v1 until the protocol is marked stable. Matching schema versions matters more than chasing the newest crate number.