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
| Pipecat | LiveKit Agents | |
|---|---|---|
| Dispatch | Your server receives LiveKit's participant_joined webhook and starts a pipeline that joins the room with LiveKitTransport | The dispatch rule carries room_config.agents; LiveKit starts a worker from your agent pool automatically |
| Where the code runs | any host you run, one process per call or a pool | LiveKit Agents workers registered with your project |
| Outbound | create the room, start the pipeline, add the SIP participant | dispatch an agent to a room, then add the SIP participant |
| Speech services | any STT, LLM and TTS Pipecat supports, wired in your pipeline | LiveKit 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.