Skip to content

Pydantic AI vs LiveKit Agents

LiveKit Agents is a voice-agent framework built on LiveKit’s WebRTC transport: rooms, SIP telephony, turn detection, noise cancellation, mid-call handoffs, and plugins for STT, LLM and TTS vendors, with a cascaded pipeline as the default. Pydantic AI’s realtime support is a speech-to-speech agent loop on four providers behind one API, and it is the same typed Agent that runs as text, in a web chat or behind your API: the call uses the same tools, dependencies and capabilities, becomes ordinary message history you can hand to a text agent for structured output, and is traced end to end in Logfire. You bring the transport; with LiveKit, the transport is the product.

Pydantic AI is one part of a stack: the Harness SDK for capabilities and complete agents, Pydantic Evals, Pydantic Graph, Pydantic Logfire for observability, and Pydantic itself for validation. The tables below cover the whole of it.

Framework

LiveKit AgentsPydantic AI and Harness SDK
LanguagePython (also Node)Python
LicenseApache-2.0MIT
Model providersMany (plugins)Many
ExtensibilityPipeline nodes (stt_node, llm_node, …)Capabilities and toolsets; 50+ with the Harness SDK
HarnessesBuild your ownBuilt-in Coder and Researcher, or compose your own
ObservabilityOpenTelemetryOpenTelemetry, including Pydantic Logfire
Durable executionNo5+ integrations
InterfacesWebRTC rooms, telephony, text sessionsCLI, web chat, AG-UI, Vercel AI, ACP (experimental)
Realtime voiceSpeech-to-speech and cascaded STT + LLM + TTSSpeech-to-speech, four providers
EvalsYesPydantic Evals
Image generationNoImage Generation

Realtime, side by side

Our realtime support means speech-to-speech models: one persistent connection, audio in and audio out, on the four providers below. LiveKit also runs the cascaded pipeline, which we do not. If you are choosing a voice stack, these are the rows that decide it:

LiveKit AgentsPydantic AI
Speech-to-speech providersPlugins for several providersFour behind one API: OpenAI, Azure OpenAI, Gemini Live, xAI; ElevenLabs in #7964
Cascaded STT + LLM + TTSYes, the default; dozens of STT and TTS pluginsNot built in; compose it yourself around a text agent
Audio transportWebRTC rooms via LiveKit server or CloudYours: browser WebRTC sideband or WebSocket relay
TelephonySIP in and out, DTMF, transfers; numbers on CloudBridge a provider such as Twilio
Turn detectionSilero VAD, own turn-detector model, adaptive interruptionProvider turn detection, barge-in, push-to-talk
Noise cancellationKrisp and ai-coustics plugins; enhanced models on CloudProvider-side only
Hand off to another agent mid-callYes, context carried overNo; delegate from a tool instead
Tools mid-call@function_tool, MCPThe same tools, toolsets and dependencies as a text agent
Capabilities mid-callNo equivalentCapabilities and hooks, with documented limits
After the callsession.history, SessionReport JSONAgent.run() on the call’s history for structured output or follow-up
ObservabilityOpenTelemetry; Insights on CloudOpenTelemetry: session, turn and tool spans, usage attributed per response
Evalspytest framework with an LLM judge; simulations on CloudPydantic Evals on the text hand-off; nothing realtime-specific yet
DeploymentAgent server, dispatch, jobs; Cloud or self-hostYour process, your backend
The same agent without voiceText-only sessions, still a room and a serverrun(), CLI, web chat, AG-UI, Vercel AI