Getting Started
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
py.typed for type
checkers.
With uv:
openrtc list, openrtc start, openrtc dev,
openrtc console, …) with:
--plain, --json, --resources),
the JSONL metrics stream (--metrics-jsonl), and optional-dependency behavior.
If you are contributing locally, install the package in editable mode:
uv sync --group dev, which includes
Typer and Rich so openrtc runs without extra flags.
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:
ctx.job.metadata["agent"]ctx.job.metadata["demo"]ctx.room.metadata["agent"]ctx.room.metadata["demo"]- room name prefix matching, such as
support-call-123 - the first registered agent
agent field, for example:
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:
