Use this page as the map for the maintained docs. Planning notes live under
plan/; the files below are the current reader-facing documentation.
From this repository, uv run easycat docs prints a compact index of route
labels and audience filters; in an installed app environment, use
easycat docs. Expand the full map with --verbose, or narrow it by audience:
uv run easycat docs --verbose # every route and command hint
uv run easycat docs --audience learners # learning routes
uv run easycat docs --audience app-builders # scaffold/app-building routes
uv run easycat docs --audience operators # deployment/observability routes
uv run easycat docs --audience maintainers # architecture/maintenance routes
uv run easycat docs --json # route map with command hints and audience labelsCoding agent? Use the root AGENTS.md for repository coding
rules; use llms.txt for machine-readable docs route discovery or
run uv run easycat explain json-schema. Replace uppercase or angle-bracket
placeholders in command hints, such as PATH or <session_id>, before running
them. Multi-word audience filters accept hyphens or underscores, so
uv run easycat docs --audience app-builders is equivalent to
uv run easycat docs --audience "app builders". The maintainers and
operators filters also include compound labels such as provider maintainers,
release maintainers, and operators and maintainers.
- New to EasyCat: start with the
repository path chooser, then use the
quickstart to run your first local voice bot. Run
uv run easycat doctorbefore the example; if provider keys are in a project.env, runuv run easycat doctor --env-file .env, then run the example withuv run --env-file .env python examples/openai_agents_voice.py. Use the installation and extras guide when choosing a smaller install, another transport/provider, or an application dependency source. - Learning voice pipelines from scratch: follow the teaching ladder, starting at 00-hello-audio, and copy the generated progress worksheet to track evidence-backed completion.
- Learning EasyCat's product surface by building an app: follow the
EasyCat feature ladder, starting at
00-first-voice-app, then continue to
01-runtime-modes and
02-providers-and-voices, followed by
03-conversation-controls and
04-tools-actions, and
05-agent-bridges, and
06-session-control,
07-observability,
08-testing-evals,
09-multi-caller,
10-telephony, and
11-production-ops. It begins with the public
VoiceAppAPI and adds runtime modes, providers, conversation controls, tools, sessions, debugging, evals, servers, telephony, and operations one capability at a time. - Building an application: scaffold with
uv run easycat init my-agent, or runuv run easycat init --list-templatesto compare templates with best-fit guidance, baseeasycat[...]package requirements and extras, required environment variables, optional environment knobs, generated files, and copyable create/preflight/check/fix/docs/json-schema/run commands (uv run easycat init --list-templates --jsonemits the same template catalog and post-scaffold command previews), then use the compact CLI path in the root README and the maintained CLI reference for every command family. - Graduating from the quickstart to the production
SessionAPI: follow from VoiceApp to EasyConfig to Session forcreate_session, theasync with session:lifecycle, event subscriptions,send_textand session actions, anddebug="full"bundles you can inspect withuv run easycat replay PATH. - Testing agents and running evals: climb the
testing and evals ladder — bundle fixtures,
offline text turns through
easycat.debug.testing(run_text_turn,run_text_turnsfor a multi-turn scenario,run_scripted_audio_turnfor one scripted pass through the audio pipeline,assert_latency,assert_llm_judge), teaching chapter 12 metrics, then live audio withuv run easycat validate latency --smoke. Scaffolded projects ship an offlinetests/test_agent.pyto start from. - Automating the CLI: use llms.txt for machine-readable docs
route discovery, use
uv run easycat docs --jsonto inspect the docs route map with command hints and audience labels, then useuv run easycat explain json-schemafor the standard--jsonenvelope, including command-specific success and error fields. Useuv run easycat doctor --jsonwhen automation needs first-run environment/check rows without Rich formatting; useuv run easycat doctor --env-file .env --jsonwhen those checks should load a project.env. Useuv run easycat validate quick --json,uv run easycat validate contracts --json,uv run easycat validate release --json, oruv run easycat validate report .easycat/validation/latest.json --jsonwhen automation needs validation run/report payloads. Replace uppercase or angle-bracket placeholders in command hints, such asPATHor<session_id>, before running them. Each docs route entry includes anaudiencelabel for choosing the right starting point without scraping descriptions. The top-levelavailable_audience_filterslists copyable filter tokens such asapp-buildersandcoding-agents; the top-levelaudience_alias_notedocuments shell-friendly hyphen and underscore aliases for multi-word audience filters and the broadmaintainers/operatorsrole filters, includingprovider maintainers,release maintainers, andoperators and maintainers; the top-levelcommand_notedistinguishes installed CLI hints from repo-localuv runhints. - Looking for runnable reference apps: use the examples command matrix for local mic, WebSocket, WebRTC, Twilio, provider swaps, tools, and debug-bundle examples.
- New to developing EasyCat itself: follow the developer textbook for a guided source tour of the system map, session ownership, audio and turn-taking, agent streaming and interruption, providers and stages, journals and replay, production servers, testing, accepted decisions, and common change recipes. It links every chapter to the implementation and contract tests.
- Looking up the production API: start with the
architecture explanation for how the pipeline and
session collaborators fit together, then use the
events reference, the
error code reference, the
journal record reference, the
EasyConfig field reference, and the
session lifecycle reference; for Telnyx,
also use the
Call Control setup guide. Run
uv run easycat explain events,uv run easycat explain turn-taking, oruv run easycat explain journalfor terminal summaries that print the matching docs route. Everyeasycat docs --jsonroute entry also carries adiataxisfield (tutorial,how-to,reference, orexplanation) so automation can pick the right kind of page. - Talking to a bot in the browser: run
uv run easycat serveand follow the browser playground guide for the one-command playground page (live transcript, interruption indicator, per-turn latency) and the WebSocket/WebRTC wire protocol behind it. - Maintaining architecture or package boundaries: use the architecture map for the pipeline, key packages, provider registries, session lifecycle, test layout, and maintainer command block, including docs/onboarding guard recipes; the full architecture explanation lives in docs/architecture.md, and the guided newcomer path lives in the developer textbook. Coding agents should also read the repository agent guide for repo structure, development commands, docs/onboarding guard recipes, validation commands, and PR expectations.
- Maintaining public imports: review the
public API contract before changing
easycat.__all__; it points to the docs route map, focused public API test, and docs guard. - Maintaining provider and protocol contracts: review the
provider contract map before changing
provider adapters, protocol cassettes, schema fingerprints, or bridge event
grammar. Run
just guard-contractsfor that focused maintenance surface. - Building a custom provider or transport: follow the
extending guides for the duck-typed STT, TTS, VAD, transport,
and agent-bridge surfaces, complete out-of-tree examples, and conformance
checks. Scaffold an external package with
uv run easycat init my-stt --template provider-stt,uv run easycat init my-tts --template provider-tts, oruv run easycat init my-vad --template provider. - Contributing code or tests: use the
contributor guide for the development loop, validation
slices, docs/onboarding guard recipes (
just guard-docs,just guard-teaching,just guard-examples,just guard-contributing,just guard-validation,just guard-contracts,just guard-ops), marker taxonomy, cassettes, and provider-addition checklist. Ifjustis not installed, use its raw command table for the equivalentuv run pytest ...commands. - Operating sessions in production: read
deployment with Docker, the
production multi-client server guide, and
observability for journal CLI commands, the debugger UI,
metrics, and traces. Start with
easycat bundles list; from this repo, adduv sync --extra debugger --group devwhen you need the UI. When a turn feels slow, use the latency guide for the per-turn CLI waterfall and the table of latency-adding defaults. Then review the journal durability contract for persistence, recovery, and storage layout. Runjust guard-opswhen editing these operator-facing pages. - Hardening a deployment or reporting a vulnerability: read the
security policy for private reporting, supported versions,
and the index of security-relevant configuration (bearer-token auth and the
non-loopback bind guard, per-caller isolation, telephony webhook trust, and
journal redaction). Use
uv run easycat docs --audience operators(or--audience operators --json) to list the operator routes it points at. - Validating a change: run
uv run easycat validate quick, inspectuv run easycat validate report .easycat/validation/latest.json, or use the matching JSON lanes (uv run easycat validate quick --json,uv run easycat validate contracts --json,uv run easycat validate release --json, anduv run easycat validate report .easycat/validation/latest.json --json) when automation needs validation output inside the standard CLI envelope. Then use the validation workflow and the validation reference for provider and report vocabulary. Runjust guard-validationwhen editing these validation-facing docs or the validate CLI behavior they describe.
- Keep this index limited to current docs. Historical plans and workstream
acceptance notes belong in
plan/. - Add a link here when a new top-level docs page becomes the maintained source for a user workflow.
- Prefer commands that work from the repository root, using
uv run ...for local development.