Skip to main content
Register multiple LiveKit agents in one process, route by metadata, and prewarm models once.

Getting Started

Install and run your first multi-agent worker in minutes.

Architecture

Learn how coroutine mode, routing, and shared prewarm work.

AgentPool API

Full reference for registration, routing, and session configuration.

CLI

openrtc dev, start, console, connect, and JSONL metrics.

Why OpenRTC?

ProblemOpenRTC
One worker process per agent classOne worker hosts all your agents
VAD and turn detector load per subprocessLoaded once, shared across every session
Hard-coded single-agent entrypointsRoute by room metadata, job metadata, or room-name prefix
3 GB per idle worker50+ concurrent sessions in a single process

Features

Coroutine-mode worker (v0.1): Host 50+ concurrent sessions per process as asyncio tasks instead of paying one subprocess per session. Cooperative backpressure is routed back to LiveKit dispatch via current_load. Multi-agent routing: Dispatch the right Agent implementation from a single worker using room or job metadata. Priority order:
  1. ctx.job.metadata["agent"]
  2. ctx.job.metadata["demo"]
  3. ctx.job.room.metadata["agent"] / ["demo"]
  4. Room name prefix (support-call-123 routes to the support agent)
  5. First registered agent (fallback)
Shared prewarm: Load VAD, turn detection, and other heavy dependencies once for every session in the pool. LiveKit-native: Built on livekit-agents with the same dev, start, console, and connect workflows. Drop into isolation="process" for per-subprocess isolation when you need it.