Docs

Pipecat vs LiveKit Agents on an Indian phone number

Two ways to put an agent on an Indian number through LiveKit SIP and RingTrunk. How each is dispatched into the call, what the code looks like, and how to choose between Pipecat and the LiveKit Agents framework.

Updated 6 September 2026

In short: Pipecat and LiveKit Agents get an Indian phone number the same way, through LiveKit SIP on a RingTrunk trunk; the difference is how the agent is put into the call, a webhook-started worker for Pipecat versus LiveKit's built-in agent dispatch for LiveKit Agents.

Same phone leg, same number

Whichever framework you use, the phone call arrives at LiveKit as a SIP participant in a room, and outbound calls are placed with create_sip_participant on your outbound trunk. Nothing about the trunk, the number or the rules on the phone leg changes. See Connect LiveKit Cloud.

How the agent joins

PipecatLiveKit Agents
DispatchYour server receives LiveKit's participant_joined webhook and starts a pipeline that joins the room with LiveKitTransportThe dispatch rule carries room_config.agents; LiveKit starts a worker from your agent pool automatically
Where the code runsany host you run, one process per call or a poolLiveKit Agents workers registered with your project
Outboundcreate the room, start the pipeline, add the SIP participantdispatch an agent to a room, then add the SIP participant
Speech servicesany STT, LLM and TTS Pipecat supports, wired in your pipelineLiveKit plugins for STT, LLM and TTS

Choosing

Choose Pipecat if you want full control of the pipeline, already have Pipecat components, or run the same agent on other transports too. You own the dispatch webhook and the process lifecycle.

Choose LiveKit Agents if you want dispatch, scaling and reconnection handled by LiveKit and you are happy inside its plugin ecosystem. Add room_config.agents to the dispatch rule and the rest is automatic.

Both run against the same RingTrunk trunk, so switching later is a code change, not a telephony change.

Guides: Pipecat · runnable example for both layers on GitHub.