sacp 10.0.0

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

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};

ClientToAgent::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:

Related Crates

License

MIT OR Apache-2.0