Installation

/docs/installation/

Building from source

Requires a Rust toolchain with MSRV 1.91 or newer.

cargo build --release

The workspace uses Cargo resolver version 3 and consists of twelve crates. Run the daemon and clients with cargo run --release -p <crate>.

Crate layout

CrateDescription
choreo-daemonThe core engine — binary choreographr. Unix socket server that validates credentials, manages persistent sessions (with sub-sessions and working directories), runs requests with a tool-call loop, and streams responses
choreo-ai-protocolsProvider protocols — OpenAI-compatible, Anthropic Messages, and Google Gemini clients, the ProviderClient trait, and the provider catalog (70+ providers)
choreo-protoFramed binary protocol (postcard + length prefix) shared between clients and daemon
choreo-keystoreX25519 keypair + ECDH/AES-256-GCM crypto library for encrypted credentials
choreo-transportNoise-IK encrypted transport over TCP
choreo-mcpMCP (Model Context Protocol) client — spawns subprocess servers, discovers tools, dispatches calls over JSON-RPC stdio
choreo-acpACP (Agent Communication Protocol) bridge — translates JSON-RPC 2.0 over stdin/stdout into choreo-proto messages so ACP-compatible editors can drive sessions
choreo-tuiFull-screen terminal UI client (ratatui + crossterm)
choreo-guiDesktop GUI client (Dioxus)
choreo-imInstant messaging bridge (Telegram)
choreo-client-coreShared parsing, markdown, image assembly, and daemon-message dispatch for UI clients
choreo-markdownMarkdown parser and HTML renderer (pulldown-cmark + ammonia)

Client/server architecture

Choreographr separates the server software that runs sessions from the clients that connect and disconnect at any time.

  • The client can run on the same computer as the daemon (via a local Unix socket), or the daemon can live anywhere on your local network or the Internet.
  • When connecting remotely, clients use Noise-IK encrypted TCP.
  • Because the daemon can live anywhere and is reachable over encrypted TCP, it can also be reached from mobile devices — for example, chatting with your agent on the go via the choreo-im Telegram bridge.

Client/server communication is encoded via Postcard.