v2.0.0Agent evals, tool calling on text, and pronunciations

Open-source infrastructure for AI voice agents

TurnCall runs real-time AI agents on phone calls, WhatsApp, SMS and the web. Choose your own speech, language and voice providers, deploy on your own infrastructure, and keep full control of your call data.

Get started
  • Self-hosted
  • No per-minute platform fees
  • Twilio, Telnyx and Asterisk
v2.0.0Latest release
174Commits to main in the last 30 days
MITOpen-source license
Docker · HelmRuns on your own servers

Works with the carriers and AI providers you already use

  • Twilio
  • Telnyx
  • OpenAI
  • Anthropic
  • Google Gemini
  • AWS Bedrock
  • Deepgram
  • ElevenLabs
  • Cartesia
  • AssemblyAI
  • Asterisk
  • WhatsApp
Platform

Everything a voice agent needs, in one service

Define an agent once and run it on every channel, with the models, tools and data it needs to handle a real conversation.

Phone, messaging and web

Inbound and outbound calls on Twilio, Telnyx or your own Asterisk PBX, plus WhatsApp, SMS, browser calls and a Chat API. One agent answers on all of them.

Any model provider

Choose each stage per agent, or use one speech-to-speech model. Run models locally with Ollama.

Tools and integrations

Call transfer, agent handoff and keypad tones built in, plus your own webhook tools and MCP servers.

Knowledge bases

Upload PDFs and documents and let agents answer from them, with hybrid vector and full-text search.

Natural conversation

Model-based turn detection, interruptions, voicemail detection and pronunciation control for brand names.

Call analysis

Summaries, sentiment, success scoring and the structured fields you define, extracted after every call and delivered to your webhook with the transcript and latency.

Performance

Low latency you can measure

TurnCall records the timing of every turn in every call, broken down by speech recognition, model and voice. You see exactly where the time goes and which setting to change.

  • ~800 msProcessing time per turn with a speech-to-text, model and voice pipeline
  • ~300 msProcessing time per turn with a speech-to-speech model
  • p50 / p95Latency summary included with every completed call

Response time for one turn

Default settings
Speech-to-text, model and voice1,600 ms
800150450200
Speech-to-speech1,100 ms
800300
End-of-turn detection Speech-to-text Model, first token Voice, first audio Speech-to-speech model

Typical figures with TurnCall's default settings, measured from the moment the caller stops speaking. End-of-turn detection is adjustable per agent, and actual times depend on the providers you choose.

Developers

An API for every part of the call

Create agents, connect numbers, place calls and receive events from your own code. TurnCall has no required dashboard, so it fits into the systems you already run.

  • REST API for agents, numbers, calls, campaigns and knowledge bases
  • Signed webhooks for call events, with the transcript and analysis
  • A call-init webhook to pick the agent and context for each call
  • Live call control: transfer, hand off, send keypad tones or end the call
  • Agent versions with one-step rollback and A/B traffic splits

        
ResponseHTTP/1.1
Build with AI

Let Claude Code wire it into your app

The TurnCall plugin for Claude Code knows the API, the webhooks and call-init, so it adds calling to your app the way TurnCall expects and leaves your business logic where it belongs.

  • Carries a curated API reference and a snapshot of the OpenAPI spec
  • Starts on its own whenever you work with TurnCall
  • Or copy skills/turncall into your project's .claude/skills
claude
> /plugin marketplace add kobikis/turncall-skill
> /plugin install turncall@turncall-skill
Installed turncall@turncall-skill

> Call every new lead in our CRM within five minutes, using the sales agent.

Example prompts. Claude uses the plugin to pick the
right TurnCall endpoints and webhooks, and asks you
where your own logic should go.
Production

Ready for real customer traffic

Reliability, testing and security features for teams running voice agents on live phone lines.

Provider failover

Configure backup speech, model and voice providers. If one fails during a call, the next takes over and the caller still gets an answer.

Deploys without dropped calls

When a server shuts down, live calls finish first. Readiness probes and a Helm chart are included.

Automated testing

Run scripted or simulated conversations against the real pipeline, in text or audio, and block a release in CI when an agent regresses.

Outbound campaigns

Call a list within each contact's local calling hours, with pacing to your number's rate, retries by outcome and a do-not-call list.

Usage limits

Cap live calls per project, outbound calls per second and messages per minute, enforced across every server.

Secure by default

Signed webhooks, per-call media tokens, encrypted provider credentials and project-scoped API keys with roles.

Use cases

Built for the calls your team takes every day

Reception and scheduling

Answer every call, book and move appointments, and transfer to staff when needed.

Inbound · tools · transfer

Reminders and follow-ups

Call customer lists at the right local time, with retries for missed calls and voicemail messages.

Outbound · campaigns

Customer support

Resolve common questions from your documentation and hand off to a person with a briefing.

Knowledge base · warm transfer

Lead qualification

Ask qualifying questions, extract structured answers and send them to your CRM after the call.

Analysis · webhooks
Self-host

Runs on your infrastructure

TurnCall is self-hosted: there is no TurnCall cloud to sign up for. It's a Python service backed by PostgreSQL and Redis that runs wherever you run containers, and you pay your providers directly.

  • Recordings and transcripts stay in your own database and storage
  • Each project can bring its own provider keys, encrypted at rest
  • MIT-licensed source code your security team can review
Docker Composemake docker-up && make migrate

PostgreSQL, Redis and the API for local development. Quickstart

Kuberneteshelm install turncall ./charts/turncall

API, evaluation and campaign workers, with autoscaling on live calls. Kubernetes guide

Container imageghcr.io/kobikis/turncall

Published for every release and every merge to main.

FAQ

Questions teams ask first

Something else? Write to hello@turncall.io.

Is there a hosted version?

Not today. TurnCall is self-hosted: you run it with Docker Compose or the Helm chart, next to PostgreSQL and Redis, on infrastructure you control.

What does it cost?

TurnCall is free and MIT licensed. You pay your phone carrier and your AI providers directly, at their own rates. There is no per-minute platform fee on top.

Which phone carriers does it work with?

Twilio and Telnyx numbers, inbound and outbound, and your own Asterisk PBX over ARI (Asterisk 20.18, 22.8, 23.2 or later). WhatsApp Business voice and messages run through the WhatsApp Cloud API.

How fast does the agent respond?

Processing takes about 800 ms per turn with a speech-to-text, model and voice pipeline, and about 300 ms with a speech-to-speech model. On top of that comes end-of-turn detection, 800 ms by default and adjustable per agent. Every call records its own timings, turn by turn.

Which AI providers can I use?

Speech-to-text: Deepgram, AssemblyAI, Cartesia, ElevenLabs and OpenAI. Language models: Anthropic, OpenAI, Google Gemini, AWS Bedrock, OpenRouter, Ollama and any OpenAI-compatible endpoint. Voices: Cartesia, ElevenLabs, Deepgram and OpenAI. Speech-to-speech: OpenAI Realtime, GPT-Live-1, Gemini Live and Amazon Nova Sonic 2.

Where does my call data go?

Recordings, transcripts and call records stay in your own database and storage. Audio and text go only to the providers you configure, and you can run the language model on your own hardware with Ollama or any OpenAI-compatible server.

How do I test an agent before it takes calls?

With evals: scripted or simulated conversations that run against the real pipeline, with tools mocked. The turncall eval command exits non-zero when an agent regresses, so it can block a pull request. See the evals guide.

What's the license?

The TurnCall engine is MIT licensed. The optional Agent Builder apps are source-available under FSL-1.1-ALv2.

Start building with TurnCall

Follow the quickstart to create an agent, connect a phone number and take your first call. Planning a larger rollout? Write to hello@turncall.io.

Talk to a TurnCall agent

Pick an agent and start the call. Your browser will ask to use the microphone.

Ready00:00
The conversation appears here.

Calls are short and run on a TurnCall server with the providers each agent uses.