Virsyn Voice AI
Virsyn Voice AI is an AI-powered voice agent platform that combines Ultravox for conversational AI and Telnyx for telephony into a unified, agency-scoped system. It enables agencies to create, deploy, and manage voice agents that handle inbound and outbound phone calls.
Key Concepts
Agencies
An agency is the top-level tenant in the system. All resources (agents, phone numbers, API keys, call data) are scoped to an agency. Each agency has its own encrypted credentials for Ultravox and Telnyx.
Agents
An agent is an AI voice assistant created in Ultravox with a local mapping stored in the Virsyn database. Agents are configured with:
- System prompt defining the agent's behavior
- Voice selection from Ultravox's voice library
- Tools that the agent can invoke during calls (HTTP endpoints, client actions, data lookups)
- Call template settings (recording, max duration, first speaker text)
Phone Numbers
Phone numbers are purchased and managed through Telnyx, then assigned to agents. A number assigned to an agent enables inbound calls to be routed to that agent automatically.
Clients & Campaigns
Agents can be assigned to clients and campaigns for organizational tracking. This enables per-client and per-campaign call analytics and reporting.
Platform Architecture
The platform is built on three core services:
| Service | Role |
|---|---|
| Supabase | Backend database, authentication, Edge Functions runtime, encrypted storage |
| Ultravox | AI voice agent engine, call management, voice synthesis, tool execution |
| Telnyx | Phone number provisioning, Call Control Applications, SIP trunking |
All business logic lives in Supabase Edge Functions -- serverless TypeScript/Deno functions that orchestrate between these services.
Edge Functions
The platform exposes 36 edge functions organized into categories:
- Agent Management -- Create, read, update, delete, assign, and sync agents
- Phone Number Management -- Search, purchase, list, assign, and release numbers
- Telephony Integration -- Provision and verify the Telnyx-Ultravox bridge
- Tool Management -- List, retrieve, and sync Ultravox tools
- Voice Management -- List and sync available voices
- API Key Validation -- Validate and store Ultravox and Telnyx credentials
- Historical Data Sync -- Backfill call data from Ultravox
- Call Processing -- Recordings, transcripts, and AI-powered call analysis
- Integration & Status -- Check integration health and sync status
- Configuration -- Agent mappings and aggregation refresh
- Webhook -- Ingest Ultravox webhook events
See the Edge Functions overview for a complete reference.
Authentication
All user-facing edge functions require a Supabase JWT passed as a Bearer token in the Authorization header. The token identifies the user and their agency. Role-based access control restricts operations by user role (agency_owner, agency_admin, agency_member).
Internal/cron functions (webhook processing, enrichment, aggregation refresh) use service-role authentication or URL-path-based secrets.