LiveKit is a strong WebRTC media server for video and audio rooms. Phone calls require native SIP, PSTN, and call transfers that a room-based architecture cannot provide.
Sigmond is a voice AI agent running on the SignalWire infrastructure this page is about. Ask him about anything you just read.

Trusted by 2,000+ companies
LiveKit handles the room. Twilio handles the phone line. Two platforms means two bills, two failure domains, two sets of logs with no shared trace ID.
Bridging a SIP trunk into a WebRTC room introduces a hop that developers in EU deployments report adds 4+ seconds per turn. The bridge is a single point of failure with limited error visibility.
Cold transfers fail with SIP 603 Decline. Voice-triggered transfers fail silently with no error logs. Call transfers are fundamental telephony operations, not edge cases.
Session timers (RFC 4028), re-INVITEs, and QoS preconditions (RFC 3312) break on LiveKit. One telecom company reported all their agents would be wasted on real carrier infrastructure.
from signalwire_agents import AgentBase
from signalwire_agents.core.function_result import SwaigFunctionResult
class SupportAgent(AgentBase):
def __init__(self):
super().__init__(name="Support Agent", route="/support")
self.prompt_add_section("Instructions",
body="You are a customer support agent. "
"Greet the caller and resolve their issue.")
self.add_language("English", "en-US", "rime.spore:mistv2")
@AgentBase.tool(name="check_order")
def check_order(self, order_id: str):
"""Check the status of a customer order.
Args:
order_id: The order ID to look up
"""
return SwaigFunctionResult(f"Order {order_id}: shipped, ETA April 2nd")
agent = SupportAgent()
agent.run()
| Capability | Room abstraction (LiveKit) | Call abstraction (SignalWire) |
|---|---|---|
| Cold transfer | Not native; participant leaves room, joins another | Native call operation |
| Warm transfer | Requires bridging rooms | Native with context carry |
| Call hold and resume | Not native to room model | Native call state |
| IVR and DTMF | Bolt-on | Native |
| Call recording | Room recording (all participants) | Per-call with selective controls |
| SIP headers and metadata | Limited | Full SIP header access |
| PSTN outbound | Requires external provider | Native |
| Global phone numbers | US-only, inbound-only | Global, inbound and outbound |
Unbearable.
| Issue | Description | GitHub reference |
|---|---|---|
| Cold transfer fails | SIP REFER results in 603 Decline from far end | #234 |
| Voice-triggered transfers fail silently | No error logs when AI-initiated transfers fail | #1305 |
| Turn detection interrupts mid-sentence | Agents cut off callers during speech | Multiple issues |
| Voice quality degrades with recording | Enabling recording causes audio quality problems | Multiple issues |
| ARM64 instances never receive speech | Complete STT failure on ARM architecture | Multiple issues |
Run pip install signalwire-agents. The Python SDK handles agent creation, tool registration, and call management.
Write a prompt, configure voice settings, and register tool functions. No WebSocket piping or SIP bridge configuration.
Assign a SignalWire number (or port your existing number) to the agent endpoint. Calls route directly to the media engine.
Cold, warm, blind, and attended transfers work natively. Context (conversation history, session variables) carries through every transfer.
No. LiveKit is a strong WebRTC media server for browser-based video and audio rooms. The issue is using a room-based architecture for telephone calls, which require SIP, PSTN, transfers, and carrier-grade reliability.
Yes. Many teams use different tools for different workloads. SignalWire handles the telephony side: phone calls, SIP trunking, PSTN connectivity, and voice AI agents on phone lines.
From public GitHub issues in LiveKit repositories. Cold transfer failures (#234), silent transfer failures (#1305), and IMS incompatibility (#438) are documented by developers in production.
AI processing: STT, LLM orchestration, TTS, and the media engine. Transport (PSTN, SIP) is billed separately at carrier rates. One invoice covers everything.
Your prompts, tool functions, and business logic carry over. The migration replaces the telephony and media layer, not the AI logic.
Trusted by
Deploy voice AI agents on native telephony with sub-second latency and global phone numbers.
SignalWire is a communications infrastructure platform. Voice, video, messaging, conferencing, queuing, recording, and AI all run on the same real-time voice and video substrate.
AI is one capability among many, not the whole business. Customers compose multiple services on a single carrier-billed call; margin expands as the service mix shifts toward higher-margin capabilities stacked on top of the transport layer.
The platform was built by the team that created FreeSWITCH. It processes 2.7 billion minutes and messages annually and is in production at 2,000+ companies, including Salesforce, Sprinklr, and Apple.