Skip to main content

StateSet Voice

Production-grade AI voice agents over Twilio and the OpenAI Realtime API, written in Rust. Multi-tenant, streaming, and observable.
A browser call uses the same media protocol and pipeline as a phone call, so web calls get the whole platform β€” agents, custom tools, transfers, evals, billing β€” with nothing extra to configure.

Capabilities

Telephony

Twilio REST plus webhooks with signature validation, inbound and outbound PSTN, and a WebSocket media bridge.

Realtime voice

OpenAI Realtime bridge with WebSocket media streaming, plus optional ElevenLabs TTS as the audio output provider.

Live supervision

Monitor, whisper, barge, escalate, and end an in-flight session.

Custom tools

Bring your own backend β€” a JSON-schema function plus an HTTPS endpoint, invoked mid-call.
Also included: a function registry for business logic (auth, subscriptions, orders, returns, exchanges, logistics), multi-tenant configuration, Kafka event streaming, and voice activity detection with per-tenant tuning.

Production surface

Stack

Axum 0.7 on Tokio, SQLx against PostgreSQL for tenant configuration (with an in-memory fallback for development), DashMap for rate-limit and session state, Tokio-Tungstenite for WebSockets, RDKafka for event streaming, and Utoipa for the OpenAPI spec. Twilio signature validation uses HMAC with constant-time comparison, so it is resistant to timing attacks.

Getting started

The Compose stack brings up the server, PostgreSQL, Kafka, Prometheus, Alertmanager, and Grafana. Rust 1.75+ is recommended; Docker 24+ for the containerised path.

Next

Build your first agent

End to end, from a phone number to a working agent.

API

Call control, sessions, supervisor actions, admin.

SDKs

TypeScript, Python, and browser web calls.

Webhooks

The event catalog and signature verification.

Configuration

Tenants, auth transport, audio providers, VAD.

MCP server

Drive the platform from Claude.