#acp #ai-agent #protocols

sacp

Core protocol types and traits for SACP (Symposium's extensions to ACP)

28 releases (10 major breaking)

Uses new Rust 2024

11.0.0-alpha.1 Jan 19, 2026
10.1.0 Dec 31, 2025
9.0.0 Dec 19, 2025
8.0.0 Dec 17, 2025
0.1.1 Oct 31, 2025

#17 in Development tools

Download history 20/week @ 2025-10-26 4/week @ 2025-11-02 70/week @ 2025-11-09 45/week @ 2025-11-16 46/week @ 2025-11-23 17/week @ 2025-11-30 705/week @ 2025-12-07 2230/week @ 2025-12-14 1353/week @ 2025-12-21 2482/week @ 2025-12-28 5052/week @ 2026-01-04 6355/week @ 2026-01-11 6506/week @ 2026-01-18 7964/week @ 2026-01-25 9597/week @ 2026-02-01 10577/week @ 2026-02-08

35,241 downloads per month
Used in 23 crates

MIT/Apache

430KB
6.5K SLoC

sacp -- the Symposium Agent Client Protocol (ACP) SDK

sacp is a Rust SDK for building Agent-Client Protocol (ACP) applications. ACP is a protocol for communication between AI agents and their clients (IDEs, CLIs, etc.), enabling features like tool use, permission requests, and streaming responses.

What can you build with sacp?

  • Clients that talk to ACP agents (like building your own Claude Code interface)
  • Proxies that add capabilities to existing agents (like adding custom tools via MCP)
  • Agents that respond to prompts with AI-powered responses

Quick Start: Connecting to an Agent

The most common use case is connecting to an existing ACP agent as a client:

use sacp::ClientToAgent;
use sacp::schema::{InitializeRequest, VERSION as PROTOCOL_VERSION};

Client.builder()
    .name("my-client")
    .run_until(transport, async |cx| {
        // Initialize the connection
        cx.send_request(InitializeRequest {
            protocol_version: PROTOCOL_VERSION,
            client_capabilities: Default::default(),
            client_info: Default::default(),
            meta: None,
        }).block_task().await?;

        // Create a session and send a prompt
        cx.build_session_cwd()?
            .block_task()
            .run_until(async |mut session| {
                session.send_prompt("What is 2 + 2?")?;
                let response = session.read_to_string().await?;
                println!("{}", response);
                Ok(())
            })
            .await
    })
    .await

Learning More

See the crate documentation for:

  • Cookbook - Patterns for building clients, proxies, and agents
  • Examples - Working code you can run

You may also enjoy looking at:

License

MIT OR Apache-2.0

Dependencies

~12–17MB
~223K SLoC