Libraries · TS & Rust 1.0

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 SDK

Official SDKs

Start here unless you have a language constraint.

TypeScript
1.0

@agentclientprotocol/sdk

npm install @agentclientprotocol/sdk
Rust
1.0 runtime / 2.x crate

agent-client-protocol

cargo add agent-client-protocol
Python
Official

agent-client-protocol

pip install agent-client-protocol
Java
Official

java-sdk

See Maven/Gradle setup in the Java SDK README
Kotlin
JVM first

com.agentclientprotocol:acp

implementation("com.agentclientprotocol:acp")

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.

SDK FAQ