All fields are required
Your code handles the conversation. The platform handles state management, transfers, and the phone network. Ship in an afternoon.
One pip install replaces the STT provider SDK, TTS provider SDK, telephony SDK, and WebSocket library you would need to wire together yourself.
Call state lives on the platform, not in your webhook handlers. Query it by UUID. Transfer calls with full context preserved.
The AI kernel runs inside the media stack. It orchestrates speech recognition, language model inference, and speech synthesis with direct access to the audio stream, eliminating the overhead of bolt-on pipelines.
Define your agent in Python, add tools that call your backend, and deploy as a standard HTTP microservice. Days, not months.
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()
| Concern | Your Code | SignalWire |
|---|---|---|
| Conversation logic | Define prompts and tools | Orchestrates STT, LLM, TTS pipeline |
| State management | Tool handlers update business state | Tracks call state, step state, context |
| Telephony | Provision numbers via API | SIP, PSTN, routing, media |
| Transfers | Define transfer targets | Executes with full context preservation |
| Barge-in handling | Nothing | Detects and handles caller interruptions |
| Error recovery | Define fallback behaviors | Retries, logs, recovers automatically |
| Scaling | Scale your microservice | Scales telephony and AI independently |
pip install signalwire-agents. One package, no additional dependencies for STT, TTS, or telephony.
Write a Python class with prompts and tool handlers. Your agent runs as a standard HTTP microservice.
Wire up tool functions to your database, CRM, or scheduling system. The AI handles the conversation; your code handles the truth.
Container, VM, or serverless. Point a phone number at your agent. Inbound calls route to your AI with sub-second latency.
You define agents in Python. The SDK generates declarative markup and serves it to the platform as a standard HTTP microservice. The platform handles STT, LLM orchestration, TTS, and telephony.
Yes. The platform integrates with multiple LLM providers. Choose the model that fits your use case and budget.
When the AI decides to call a tool, your Python function executes. Your code accesses your database, enforces your business rules, and returns the result. The AI communicates the result to the caller.
YAML configuration works for standard agents and rapid prototyping. The Python SDK adds full IDE support, testing, and programmatic tool definitions. Both target the same platform.
WebSocket control enables live call manipulation: inject prompts mid-call, transfer on external events, build supervisor dashboards. All three interfaces (YAML, SDK, WebSocket) compose together.
Trusted by 2,000+ companies
One pip install. One phone number. Production in an afternoon.