Skip to main content

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):
The base package includes the LiveKit Silero and turn-detector plugins used by OpenRTC’s shared prewarm path. The wheel includes PEP 561 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

With LIVEKIT_URL, LIVEKIT_API_KEY, and LIVEKIT_API_SECRET set, the minimal worker invocation is:
Use 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.
See Routing for the full priority chain and error behavior.

Discovery-based setup

If you prefer one agent module per file, use discovery with optional @agent_config(...) metadata: