LiveKit Agents

Framework · Last verified 2026-09-30

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

LiveKit Agents key facts. Data as of 2026-09-30.
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

  • AgentSession runs 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 current chat_ctx) to transfer control of the conversation. (source)
  • AgentTask and TaskGroup for 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.MCPToolset wrapping HTTP or stdio MCP servers (Python SDK). (source)
  • Built-in test framework with LLM judges, plus job dispatch through AgentServer and 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

MCP, A2A and AG-UI support for LiveKit Agents. See the full matrix.
ProtocolSupportNote
MCP Yes evidence
checked 2026-09-30
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
checked 2026-09-30
Not in the README, the agents docs index (llms.txt) or released code; only open, unmerged pull requests were found.
AG-UI Unknown
checked 2026-09-30
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]"

Install not yet verified by this site. What this means

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_KEY and LIVEKIT_API_SECRET for LiveKit Cloud or a self-hosted server.
  • Model strings such as deepgram/nova-3 use LiveKit Inference on LiveKit Cloud; to call providers with your own keys, use plugin classes (for example openai.LLM) instead.
  • MCP needs the mcp extra (livekit-agents[mcp]); the older mcp_servers parameter is deprecated in favour of MCPToolset in tools.
  • 1.8.0 changed OpenTelemetry output (conversation content moved from span events to attributes), which breaks dashboards built on the old events.

Official quickstart

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_servers parameter on Agent and AgentSession is 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

Unknown fields: protocols.a2a: searched the README, https://docs.livekit.io/agents/llms.txt and a GitHub code search of livekit/agents (only an unrelated hit in a plugin README). Open, unmerged pull requests propose A2A support (for example https://github.com/livekit/agents/pull/7317, a draft), so nothing is released. protocols.agui: same sources plus the AG-UI README integration list; no mention.

Something wrong or out of date, or do you maintain LiveKit Agents and want this page removed? Report a correction or request removal.