Skip to main content

TL;DR

UnpodLiveKitPipecat
What it isCommunication infra for AI agentsReal-time audio infrastructure + agent frameworkOpen-source voice pipeline framework
You ownYour agent logicEverythingEverything
They managePhone numbers, STT/TTS, VAD, orchestrationWebRTC rooms (self-hosted or cloud)Nothing - it’s a library
Phone numbersBuilt-in, no carrier accountBring your own SIP trunkBring your own
STT/TTSFully managed, automatic failoverYou configure and run providersYou configure and run providers
Time to first call~2 hours~4 months~4 months
ScalingAutomaticYou manage workersYou manage processes
Your agent formatWebhook, SDK, LangChain, MCPLangChain, customLangChain, custom
Best forTeams that want calling infra handledTeams needing full audio controlTeams wanting pipeline flexibility

The Core Difference

LiveKit and Pipecat are audio frameworks. They give you building blocks to construct a voice pipeline. You choose and wire every component - STT provider, TTS provider, VAD, transport, endpointing. Then you deploy it, scale it, and keep it running. Unpod is calling infrastructure. You bring the agent. We give it a phone number and handle all the audio plumbing.

Pipecat

Pipecat gives you components to build a voice pipeline yourself:
# Pipecat - you wire and run every component
pipeline = Pipeline([
    transport.input(),
    stt,
    llm,
    tts,
    transport.output(),
])
runner = PipelineRunner()
await runner.run(PipelineTask(pipeline))
You pick the STT, the TTS, the transport. You manage the process. You handle failover. Maximum flexibility - maximum setup work. Good fit: Teams with specific provider requirements or non-standard pipeline shapes. Research and experimental systems.

LiveKit

LiveKit provides real-time infrastructure (WebRTC rooms, SIP, TURN) and an agent framework on top:
# LiveKit - you configure all providers and manage the room
async def entrypoint(ctx: JobContext):
    await ctx.connect()
    agent = VoiceAgent(
        vad=silero.VAD.load(),
        stt=deepgram.STT(),
        llm=openai.LLM(),
        tts=cartesia.TTS(),
    )
    agent.start(ctx.room)
You configure every provider. You deploy and manage the LiveKit server (or pay for LiveKit Cloud). Phone numbers require a SIP trunk from a carrier. Good fit: Teams already on LiveKit, or needing fine-grained WebRTC control for browser and mobile use cases beyond phone calls.

Unpod

You bring the agent. Unpod gives it a phone number and handles every audio layer:
# Unpod - you write the logic, we handle the communication stack
async def handle_call(ctx: CallContext) -> None:
    ctx.session.dialog_machine = DialogMachine(flow=flow, llm="anthropic/claude-haiku-4-5")
    await ctx.session.run()

AgentRunner(entrypoint=handle_call, agent_id="agt_...").start()
Numbers provisioned from Unpod. STT/TTS configured via voice profiles with automatic failover. Orchestration and dispatch handled automatically. You can also point Unpod at an existing HTTP endpoint or LangChain agent without writing any SDK code. Good fit: Teams that want production voice calls without becoming telephony experts.

When to Choose Each

Choose Unpod when:

  • You want phone numbers without a carrier account or SIP trunk
  • You have an existing agent and want to give it voice in hours - not months
  • You do not want to manage STT/TTS provider accounts, failover, or audio infrastructure
  • You want Voice + SMS + WhatsApp from one API
  • Your core value is the agent logic - not the communication stack

Choose LiveKit when:

  • You need granular WebRTC control (custom ICE, codec requirements)
  • You are already running LiveKit infrastructure
  • You need browser or mobile real-time communication beyond phone calls
  • You want full ownership of every infrastructure component

Choose Pipecat when:

  • You need a highly customised pipeline shape or experimental architecture
  • You want maximum control over every processing step
  • You are comfortable managing deployment, scaling, and provider accounts yourself

Feature Comparison

Telephony

FeatureUnpodLiveKitPipecat
Managed phone numbersYesNoNo
SIP trunk requiredNoYesYes
Inbound callsYesYes (with SIP)Requires setup
Outbound callsYes (SDK)Yes (with SIP)Requires setup
BYON (bring your own number)YesYesYes

Voice Processing

FeatureUnpodLiveKitPipecat
Managed STT/TTSYes - voice profilesNo - configure yourselfNo - configure yourself
Provider failoverAutomaticManualManual
VAD + barge-inManagedYou configureYou configure
Deepgram STTYesYesYes
Cartesia TTSYesYesYes
ElevenLabs TTSYesYesYes

Developer Experience

FeatureUnpodLiveKitPipecat
Python SDKYesYesYes
HTTP endpoint / webhookYesNoNo
Structured flows (SuperDialog)YesNoNo
Call recordingsManagedSelf-managedSelf-managed
TranscriptsManagedSelf-managedSelf-managed
Dashboard + UIYesLimitedNo
Metrics + analyticsYesLimitedNo

Open Source

All three are open source. Unpod’s core components - unpod, supervoice, superdialog - are on GitHub. You can self-host the full stack or use Unpod’s managed cloud.

Self-hosting Unpod

Run the full Unpod communication stack on your own infrastructure.