Contact Sales

All fields are required

Swap the Telephony Layer. Keep Everything Else. | SignalWire
Migration Guide

Swap the Telephony. Keep Your Stack.

Whether you use Vapi, Retell, or another AI orchestration layer, the telephony underneath it is the bottleneck: latency, cost, and a vendor that is pivoting away from phones.

< 1.2s
typical AI response latency
2,000+
companies in production
5-10
business days for number porting
0
changes to your AI layer
Why Swap

The Telephony Layer Is the Bottleneck

Your telephony provider is pivoting to AI

Legacy providers are deprioritizing the phone company work to chase AI revenue. The infrastructure underneath your AI layer is getting less attention, not more.

Every network hop adds latency

Audio travels from the carrier through a telephony provider, then to your AI layer. SignalWire's infrastructure is built for real-time media. Fewer hops, faster calls.

Markup stacks through the vendor chain

Your telephony provider marks up carrier rates. Your orchestration tool marks up the telephony provider. You pay margins on margins.

When the call drops, who owns it?

Debugging across telephony provider logs and AI orchestration logs at 2am is the hidden cost of a multi-vendor stack.

Build a Voice AI Agent

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()

What Changes, What Stays

Before: Legacy Telephony

  • Your application (unchanged)
  • AI orchestration layer (unchanged)
  • LLM, STT, TTS providers (unchanged)
  • Legacy telephony provider (the bottleneck)
  • PSTN / Carrier Network

After: SignalWire Telephony

  • Your application (unchanged)
  • AI orchestration layer (unchanged)
  • LLM, STT, TTS providers (unchanged)
  • SignalWire replaces telephony
  • PSTN / Carrier Network

Everything That Stays the Same

ComponentChanges?
Your application codeNo
AI agent definitionsNo
Conversation flowsNo
Tool and function handlersNo
LLM providerNo
STT providerNo
TTS providerNo
Phone numbersSame numbers, ported to SignalWire
Call qualitySame or better
CostLower

Step-by-Step Migration

1

Create your SignalWire space

Sign up and get a project space with API credentials. Takes minutes.

2

Provision phone numbers

Provision new numbers via API or dashboard, or start a port request for your existing numbers.

3

Configure SIP trunking

Set up SIP trunking between SignalWire and your AI orchestration layer. Standards-compliant SIP with TLS and SRTP.

4

Update your orchestration config

Point your AI orchestration layer at SignalWire numbers instead of the old provider. Agent definitions and flows stay unchanged.

5

Validate with test calls

Make test calls. Verify call quality, latency, and feature parity. If it worked before, it works on SignalWire.

6

Port remaining numbers

Once validated, port the rest. Typical US porting: 5-10 business days. No downtime during the port.

💡
SignalWire was built by the team that created FreeSWITCH, the telephony engine running inside major carriers and contact center platforms. Infrastructure built by telephony engineers, not assembled from carrier APIs.

FAQ

Does SignalWire support standard SIP?

Yes. Standards-compliant SIP with full codec support (G.711, Opus, G.729), RFC 2833 DTMF, T.38 fax, and TLS/SRTP encrypted media.

Can I run both providers during migration?

Yes. Run both in parallel. Move numbers at your own pace. No all-or-nothing cutover required.

What about SMS and MMS?

SignalWire supports programmable SMS and MMS. Messaging migration follows the same pattern as voice.

What is the path beyond telephony replacement?

Phase 2 moves STT and TTS onto the platform. Phase 3 moves agent logic to the Python SDK. Each phase is independent and pays for itself.

Will my Vapi/Retell app still work?

Yes. Replace the telephony layer underneath. Your AI orchestration stays the same.

What about contact center features like Studio or Flex?

This guide covers the telephony swap. If you depend on vendor-specific products, you can swap voice telephony while keeping those products. Or explore SignalWire equivalents: declarative YAML for call flows, subscriber management for contact center patterns.

Trusted by 2,000+ companies

Swap the telephony layer. Keep everything else.

Provision SignalWire numbers and configure SIP trunking. Your AI agents keep running without changes.