Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

choir documentation

Getting started is in the top-level README. Everything else is here, indexed by task.

Each page is also pulled into the crate that implements it with #![doc = include_str!], and the release gate runs cargo doc -D warnings, so a Rust example here that stops compiling fails the build.

API documentation →

The node itself →

choir docs builds the book with rustdoc inside it at /api/. From a checkout: cargo run -p choir-cli -- docs --open. The comment above is a marker choir docs replaces with a link to the node (D76).

Start here

You wantRead
What this isWhy choir exists
How the pieces fitArchitecture
To run a nodeRunning a node
To use a nodeThe CLI and HTTP API
To get a change reviewed and landedThe contribution workflow
Something is brokenTroubleshooting

Operating a node

PageCovers
Running a nodeFlags, policy files, supervised install
AuthorizationACLs (D29), ownership (D42), landing basis (D43), key rotation (D44), self-service (D36), publishing (D78)
Rate limits, quotas and fairnessRequest log, rate limits (D33), quotas (D37), in-flight window
WebhooksRef-landed deliveries (D32)
Observability and repairDecision journal, choir repair, derived records
Transports and the browser surfaceGit over HTTPS and SSH (D31), read-only page (D28), browsing (D30)

Runbooks:

Using a node

PageCovers
The CLI and HTTP APIEvery command and endpoint, generated from one table
The contribution workflowWorkspace to landed ref, review rules
Agent templatesSnippets for Claude Code, Codex and Cursor
AGENTS.mdThe surface, written for an agent

Reference

PageCovers
TroubleshootingSymptoms, causes, fixes
ERRORS.mdEvery rejection code and repair hint, generated
SYNC.mdCatching up on a log and verifying a served page
DECISIONS.mdWhat each D<n> means, and which are one-way doors
Bridge permissionsMinimum GitHub App grants

Which of these is generated

The gate fails when a generated file differs from its source. Regenerate with cargo run -p choir-cli --example gen-surface.

GeneratedSource
The surface block in using/cli.mdcrates/choir-cli/src/surface.rs
theme/choir-tokens.csscrates/choir-node/src/ui.css
The cheat-sheet block in the READMEcrates/choir-cli/src/surface.rs
AGENTS.md, /llms.txt, /api/schemacrates/choir-cli/src/surface.rs
ERRORS.mdcrates/choir-node/src/reject.rs
The command lists in templates/crates/choir-cli/src/surface.rs

Everything else on this page is hand-written.