Getting Started
Already using livekit-agents? Start with
Coming from livekit-agents for the before/after:
what you delete, what you keep, and what you gain. This page is the from-scratch
install.
Requirements
OpenRTC requires Python>=3.11,<3.14 and depends on
livekit-agents[openai,silero,turn-detector]~=1.5. 3.10 is not supported
(LiveKit’s Silero / turn-detector stack pulls onnxruntime, which does not ship
wheels for CPython 3.10 in current releases). See the repository’s
CONTRIBUTING.md for uv workflows.
Install
The voice framework is an opt-in extra:import openrtc pulls neither livekit
nor pipecat. The livekit backend is the default, so install openrtc[livekit]
to run it (add cli for the CLI):
- uv (recommended)
- pip
- Editable (contributors)
openrtc list, openrtc start, openrtc dev, openrtc console, …):py.typed for type checkers.
See CLI for subcommands, output modes (--plain, --json, --resources), the JSONL metrics stream (--metrics-jsonl), and optional-dependency behavior.
CLI quick path
WithLIVEKIT_URL, LIVEKIT_API_KEY, and LIVEKIT_API_SECRET set, the minimal
worker invocation is:
openrtc start for production-style runs. See CLI for console,
connect, download-files, and the JSONL metrics stream (--metrics-jsonl,
which you can tail with tail -f openrtc-metrics.jsonl or pipe through jq).
Quick start
Routing between agents
AgentPool resolves an agent in this order:
Pass metadata as a JSON object with an
"agent" key:
If metadata references an agent name that is not registered, OpenRTC raises a
ValueError with a clear message instead of silently falling back.Discovery-based setup
If you prefer one agent module per file, use discovery with optional@agent_config(...) metadata:

