Contact Sales

All fields are required

Platform Architecture: Why One Stack Wins | SignalWire
Unified Architecture

Your AI Vendor's Vendor Has a Vendor.

Multi-vendor voice AI is five invoices, five failure modes, and state management you build yourself. One platform where AI runs inside the media engine, governed by the control plane, eliminates the vendor chain.

2.7B
minutes and messages annually
2,000+
companies in production
< 1.2s
typical AI response latency
$0.16
per minute, AI processing
The Vendor Chain Problem

Five Vendors to Make One Voice Call

Five Invoices

Telephony provider, STT vendor, LLM provider, TTS vendor, and your state store. Each one bills separately, scales differently, and has its own support queue.

Five Failure Modes

When one vendor throttles, the entire pipeline degrades. STT delays cascade to LLM, which cascades to TTS. Your application is the only thing connecting them.

Five Escalation Paths

A call drops at 2am. Which vendor gets the ticket? You check five dashboards, correlate timestamps across four log formats, and spend 90 minutes finding a 2-second latency spike.

State Management Is Your Problem

No vendor owns call state. You build it yourself with Redis, webhooks, and retry logic. Race conditions are structural, not bugs.

Multi-Vendor Stack vs. Unified Platform

Multi-Vendor (You Build Everything)

  • Telephony + STT + LLM + TTS + state store + logging
  • Six SDKs, six billing relationships, six escalation paths
  • Your application is the glue connecting all of them
  • Error handling, retry logic, and log correlation are yours

SignalWire (One Platform)

  • AI kernel inside the media engine. State, routing, and observability in the control plane. One system.
  • One SDK, one invoice, one support path
  • Your code handles business logic only
  • State, lifecycle, errors, and observability are native

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

The Vendor Chain Failure Modes

VendorFailure ModeImpact
Telephony providerOutage or degradationAll calls drop. No fallback.
STT vendorLatency spikeDelays cascade to LLM and TTS. Caller hears dead air.
LLM providerRate limitingResponses queue. Callers wait 5-10 seconds.
TTS vendorQuality degradationVoice artifacts. Callers notice immediately.
Your state storePartition or slowdownRace conditions. Duplicate actions. Lost context.

Unified Error Handling

Each multi-vendor failure mode requires its own detection, mitigation, and recovery strategy in your code.

SignalWire classifies errors using a 10-type taxonomy. Each error is categorized as fatal or non-fatal. Non-fatal errors trigger recovery phrases transparently. Fatal errors execute graceful shutdown with a hangup hook that captures final state. You do not build error detection per vendor.

Debugging: One Trace vs. Five Dashboards

Multi-Vendor Debugging

  • Check telephony dashboard: call connected normally
  • Check STT dashboard: latency looks normal
  • Check LLM dashboard: latency spiked, but which call?
  • Check TTS dashboard: queue depth increasing
  • Correlate timestamps across four dashboards
  • Total investigation: 90 minutes

SignalWire Debugging

  • Query structured event stream: per-component latency for every turn
  • STT: 150ms, LLM: 2,100ms (identified), TTS: 160ms
  • Total investigation: 2 minutes, one dashboard

Protocol Agnostic: One Integration for Every Channel

ChannelHow It ConnectsSame State?Same AI?
PSTN phone callsPhone numbersYesYes
SIP trunksSIP endpointsYesYes
WebRTC browserSubscriber tokensYesYes
Mobile SDKSubscriber tokensYesYes
💡
SignalWire was created by the team that built FreeSWITCH, the open-source telephony engine behind Vonage, Five9, Zoom Phone, and Amazon Connect. The AI kernel is embedded directly in the media stack. When something needs optimization, one team modifies one codebase.

FAQ

Can I bring my own LLM or STT provider?

Yes. The platform includes default STT, LLM, and TTS. You can also connect your own providers. The state management, orchestration, and telephony remain platform-native regardless.

What if I only need telephony without AI?

SignalWire provides SIP trunking, PSTN, phone numbers, and messaging without the AI layer. You pay for what you use. The AI capabilities are available when you need them.

How does the single-stack architecture affect reliability?

No inter-vendor network hops means no cascading failures between services. The system that handles one call handles a thousand calls the same way. What you test in development is what runs in production.

What does $0.16 per minute include?

AI processing: STT, LLM, and TTS. Transport (SIP, PSTN) is billed separately at carrier rates. One invoice. No per-token variance. AI billing runs only while the AI is actively processing, not during holds or transfers.

Trusted by

Replace Five Vendors With One Platform

Build voice AI on a unified stack where AI runs inside the media engine. The control plane handles state and routing. One system.