LiveKit Agents
TL;DR
LiveKit Agents is LiveKit's Apache-2.0 Python framework for realtime voice and video agents that join LiveKit rooms as participants. It combines speech-to-text, LLM and text-to-speech or realtime models with turn detection, agent handoffs, tasks, MCP tools and telephony. It suits teams building phone or in-app voice agents, self-hosted or on LiveKit Cloud.
Key facts
| Type | Framework |
|---|---|
| Languages / SDKs | Python |
| License | Apache-2.0 |
| Pricing model | Open core |
| Orchestration pattern | Handoff |
| GitHub stars | 14,431 (as of 2026-09-30) |
| GitHub forks | 3,826 |
| Last push | 2026-09-30 |
| Latest release | livekit-agents@1.8.3 |
| Repository | livekit/agents |
| Website | livekit.com |
| Documentation | docs.livekit.io |
| Last verified | 2026-09-30 |
Key features
AgentSessionruns a voice pipeline built from any mix of VAD, STT, LLM and TTS plugins, or a realtime speech model, for one user session. (source)- Agent handoffs: a function tool returns a new
Agent(optionally with the currentchat_ctx) to transfer control of the conversation. (source) AgentTaskandTaskGroupfor short-lived steps that return a typed result, with the option to revisit earlier steps in a group. (source)- Prebuilt tasks for collecting names, emails, addresses, dates of birth, phone numbers, card details and DTMF input, plus warm transfer to a human. (source)
- Supervisor pattern in which one agent keeps the session and routes work to specialist tasks. (source)
- Turn detection with a transformer-based end-of-turn model, VAD and adaptive interruption handling. (source)
- MCP tools through
mcp.MCPToolsetwrapping HTTP or stdio MCP servers (Python SDK). (source) - Built-in test framework with LLM judges, plus job dispatch through
AgentServerand SIP telephony. (source)
Architecture and orchestration pattern
Pattern: Handoff
A LiveKit Agents program is an AgentServer process that registers with a LiveKit server and receives jobs through dispatch. For each job, an entrypoint joins a LiveKit room and starts an AgentSession, which wires audio and video to a pipeline of VAD, speech-to-text, LLM and text-to-speech plugins, or to a realtime speech model. The agent is a participant in the room, so clients connect through LiveKit's WebRTC SDKs or by phone over SIP.
Within a session, one Agent is active at a time. An agent holds instructions, tools and optionally its own models; a tool can return another agent to hand off control, and the docs describe passing chat_ctx to keep history or starting fresh. Tasks take temporary control to complete one objective and return a typed result, and task groups chain tasks with backtracking. The docs present these as combinable patterns: single agent with tools, supervisor with tasks, subagent delegation to a background model, and handoffs.
Conversation history lives in the session's ChatContext, and custom per-session state goes in a typed userdata object. Long-term knowledge and actions come from tools, RAG or MCP servers. The same framework exists for Node.js in a separate repository (AgentsJS).
Human in the loop
Because the user is live on the call, the main human controls are conversational: turn detection lets the user interrupt the agent mid-sentence, and adaptive interruption handling separates real interruptions from backchannel sounds. WarmTransferTask hands a call to a human operator over SIP, plays hold music, and gives the operator a context summary before connecting the caller. Tool calls can be forwarded to the user's frontend over RPC, so the client app fulfils or confirms them, and tasks can collect explicit consent before the flow continues. The docs do not describe a separate approval queue for tool calls outside the conversation.
Protocols
| Protocol | Support | Note |
|---|---|---|
| MCP | Yes evidence | Client: mcp.MCPToolset wraps HTTP or stdio MCP servers as agent tools in the Python SDK; the page marks MCP as not available in the Node.js SDK. |
| A2A | Unknown | Not in the README, the agents docs index (llms.txt) or released code; only open, unmerged pull requests were found. |
| AG-UI | Unknown | Not in the README, docs index or repository code, and LiveKit is not listed in the AG-UI README. |
Best for
- Voice support agents that route callers between specialists and can warm-transfer to a human (shortlist)
- Running the full voice stack, including the LiveKit media server, on your own infrastructure (shortlist)
- Phone agents that place or receive calls over SIP
- Structured voice data collection, such as intake forms, with prebuilt tasks
Not for
- Text-only or batch agents that never join a realtime session
- Node.js projects that need MCP, which the docs mark as Python-only
- Systems that need A2A endpoints today
Quickstart
pip install "livekit-agents[openai,deepgram,cartesia]" from livekit.agents import Agent, AgentServer, AgentSession, JobContext, RunContext, cli, function_tool, inference
class BillingAgent(Agent):
def __init__(self) -> None:
super().__init__(instructions="You handle billing questions. Keep answers short.")
class FrontDesk(Agent):
def __init__(self) -> None:
super().__init__(instructions="Greet the caller and find out what they need.")
@function_tool
async def transfer_to_billing(self, context: RunContext):
"""Called when the caller asks about invoices or payments."""
return BillingAgent(chat_ctx=self.chat_ctx), "Transferring you to billing."
server = AgentServer()
@server.rtc_session()
async def entrypoint(ctx: JobContext):
session = AgentSession(vad=inference.VAD(), stt="deepgram/nova-3", llm="google/gemma-4-31b-it", tts="cartesia/sonic-3:9626c31c-bec5-4cca-baa8-f8ba9e84c8bc")
await session.start(agent=FrontDesk(), room=ctx.room)
if __name__ == "__main__":
cli.run_app(server)
Common pitfalls
- Requires Python >= 3.10 (
requires-python = ">=3.10,<3.15"); the Node.js edition is a separate package and repository. - The agent needs a LiveKit server: set
LIVEKIT_URL,LIVEKIT_API_KEYandLIVEKIT_API_SECRETfor LiveKit Cloud or a self-hosted server. - Model strings such as
deepgram/nova-3use LiveKit Inference on LiveKit Cloud; to call providers with your own keys, use plugin classes (for exampleopenai.LLM) instead. - MCP needs the
mcpextra (livekit-agents[mcp]); the oldermcp_serversparameter is deprecated in favour ofMCPToolsetintools. - 1.8.0 changed OpenTelemetry output (conversation content moved from span events to attributes), which breaks dashboards built on the old events.
Pros
- Voice turn-taking is built in: an end-of-turn model, VAD and interruption handling that tells backchannel noises from real interruptions. (source)
- STT, LLM, TTS and realtime providers can be swapped per agent through plugins or LiveKit Inference. (source)
- Prebuilt tasks cover common voice steps, including an agent-assisted warm transfer to a human. (source)
- The whole stack, including the LiveKit media server, can run on your own servers. (source)
- Frequent releases: livekit-agents 1.8.0 to 1.8.3 shipped in September 2026. (source)
Cons
- MCP support is only available in the Python SDK, not in the Node.js edition. (source)
- The
mcp_serversparameter onAgentandAgentSessionis deprecated, so older MCP code needs changing. (source) - Version 1.8.0 made breaking changes to OpenTelemetry spans and attributes. (source)
- The quickstart assumes LiveKit Cloud, and deployment, inference and observability beyond the free Build plan are paid. (source)
Alternatives
FAQ
Does LiveKit Agents support MCP?
Yes, in Python. mcp.MCPToolset wraps an HTTP or stdio MCP server and passes its tools to an agent. The docs mark MCP as unavailable in the Node.js SDK.
Is LiveKit Agents free?
The framework is Apache-2.0 and can run against a self-hosted LiveKit server. LiveKit Cloud has a free Build plan and paid plans for deployment, inference and observability at larger scale.
What languages does LiveKit Agents support?
This repository is the Python SDK (Python 3.10 to 3.14). A separate AgentsJS repository provides the Node.js edition, with some features, such as MCP, missing there.
How do multiple agents work together in LiveKit Agents?
One agent is active per session. A tool can return another agent to hand off control, tasks take temporary control and return typed results, and a supervisor agent can route work to tasks.
Is there help for building LiveKit agents with coding assistants?
The README points coding assistants to a LiveKit Docs MCP server and an installable agent skill. These are documentation aids, not an integration that runs coding agents.
Sources
- LiveKit Agents GitHub repository
- LiveKit Agents README
- LiveKit Agents LICENSE
- livekit-agents pyproject.toml
- LiveKit Agents releases
- livekit-agents 1.8.0 release notes
- AgentsJS (Node.js edition) repository
- LiveKit Agents docs
- Voice AI quickstart (docs)
- Agent sessions (docs)
- Agents and handoffs (docs)
- Workflows (docs)
- Tasks and task groups (docs)
- Prebuilt tasks (docs)
- Supervisor pattern (docs)
- Turns overview (docs)
- Model Context Protocol (docs)
- Forwarding tool calls to the frontend (docs)
- WarmTransferTask (docs)
- Testing overview (docs)
- LiveKit pricing
- AG-UI README, supported integrations
- LiveKit homepage