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 for evaluation, Pydantic Graph for graph-based workflows, 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 executionNoSeven integrations
InterfacesWebRTC rooms, telephony, text sessionsCLI, web chat, AG-UI, Vercel AI, ACP (experimental), GitHub Agentic Workflows
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