Contact Sales

All fields are required

Your Agent Is Smart. Give It a Voice. | SignalWire
LangChain + Voice Infrastructure

Your Agent Is Smart. Give It a Voice.

Your LangChain agent handles six tools, three retrievers, and conditional logic. Making it answer a phone call should not add six seconds of latency.

< 1.2s
typical AI response latency
2,000+
companies in production
2.7B
minutes and messages processed
The Voice Gap

LangChain Orchestrates Logic. It Does Not Handle Phone Calls.

Latency compounds at every hop

HTTP-based voice bridging adds 2 to 4 seconds of overhead on top of your LLM latency. Developers report 6 to 7 second round trips. At two seconds, callers get impatient. At six, they hang up.

Telephony is a separate engineering problem

SIP signaling, codec transcoding, jitter buffers, echo cancellation, and NAT traversal have nothing to do with your agent's reasoning graph. They require domain expertise your team should not need.

Protocol mismatch blocks deployment

Your agent speaks WebSocket. Phones speak SIP. Bridging them without middleware latency requires infrastructure purpose-built for real-time voice, not a general-purpose WebRTC adapter.

Scaling voice is not scaling HTTP

Concurrent voice sessions require media processing, carrier-grade SIP handling, and geographic distribution. Your agent scales horizontally. The voice layer needs telephony infrastructure underneath.

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 Stays. What Changes.

You Keep (unchanged)

  • Your LangGraph state graph and reasoning chains
  • Your tool definitions and implementations
  • Your RAG retrievers and vector stores
  • Your prompt templates and conversation memory
  • Your LLM choice (OpenAI, Anthropic, self-hosted)

You Add (via SignalWire)

  • A YAML document defining the telephony wrapper
  • Tool-calling endpoints on your existing server
  • A phone number pointed at your YAML document

Latency: DIY Voice Bridge vs. SignalWire

ComponentHTTP Voice BridgeSignalWire
Audio capture to STT200 to 800ms (middleware hop)Co-located, sub-100ms
LLM processingYour LLM latency (same)Your LLM latency (same)
TTS to audio playback200 to 500ms (middleware hop)Co-located, sub-100ms
Total overhead (excl. LLM)2 to 4 secondsUnder 1200ms median
Caller experience at 6 to 7sHang upConversational

From Chat Agent to Phone Agent in an Afternoon

1

Wrap your tool handlers

Expose your existing LangChain tool-calling handlers as webhook endpoints. The request/response format matches standard function calling.

2

Write a YAML document

Define the call flow, available functions, and prompt. Your agent's sophistication lives in your handlers, not in YAML.

3

Get a phone number

Provision a number in your SignalWire dashboard and point it at your YAML document.

4

Call it

Your LangGraph agent answers a real phone call. The reasoning graph, retrievers, and tools all work. The hard part was building the agent, and you already did that.

SignalWire was founded by the engineers who wrote FreeSWITCH, the open-source telecom engine used by carriers and contact centers for 20 years. No middleware hops. No WebRTC bridges adding latency.

FAQ

Does this replace LangChain?

No. Your LangChain agent, graph, tools, retrievers, and LLM choice stay exactly where they are. SignalWire provides the telephony layer underneath. Two systems, each doing what it was built for.

What about the latency from my LLM?

SignalWire eliminates telephony overhead (codec transcoding, SIP signaling, media transport). Your LLM latency is your LLM latency. The total response time is your LLM time plus 800-1200ms infrastructure time. With speech-to-speech voice models, infrastructure time can be as low as 600ms.

Can my agent still use its existing tools over voice?

Yes. Tool calls work identically. When the LLM decides to invoke a tool, the request goes to your handler. Your handler runs whatever logic it runs today (RAG, database, API calls) and returns the result.

What does it cost?

Voice AI processing starts at $0.16 per minute. Phone numbers and SIP trunking at carrier rates. No per-tool surcharges.

Trusted by 2,000+ companies

The Phone Layer Is Infrastructure, Not a Research Project.

Your LangChain agent works over text. Making it work over the phone takes an afternoon, not a quarter.