By Ajitesh

LiveKit vs Vapi vs Retell: Which One Should You Build Your Voice Agent On?

LiveKit vs Vapi vs Retell: Which One Should You Build Your Voice Agent On?

Most LiveKit vs Vapi comparisons start with the per-minute price. It is the least useful number on the page.

All three will get you a talking agent in an afternoon. The real difference shows up a few weeks later, when the agent is taking real calls and someone wants to change how it handles a refund question. On LiveKit, that change is a pull request. On Vapi, it is an edit to a config that Vapi runs for you. On Retell, it is a node in a visual flow. Which of those you want depends on who will make the change, how you plan to test it, and how much of the stack you need to own.

A disclosure first. I build Tough Tongue AI, which is not one of these three. We run on real-time voice infrastructure of this kind, and most of our engineering time goes into the layer above it, so I have opinions about where the hours actually go. Every fact about LiveKit, Vapi, and Retell below comes from the vendor’s own pricing page or documentation, checked on October 28, 2026. Prices in this category move every quarter, so check anything decisive with the vendor before you commit.

The short answer

Pick LiveKit if you want the agent to be code you own: a Python or Node.js program in your repository, tested in your own CI, running on LiveKit Cloud or on your own servers. Pick Vapi if you want a hosted API where you choose the transcriber, model, and voice, Vapi runs the call, and your business logic stays on your server. Pick Retell if phone calls are the product and you want a visual conversation flow, simulation tests, and automatic scoring of live calls in one place.

LiveKit AgentsVapiRetell AI
What the agent isA Python or Node.js programAn assistant config, set in the dashboard or APIA single prompt or a visual conversation flow
Who runs the callYour agent process, on LiveKit Cloud or your own serversVapiRetell
Open sourceYes, Apache 2.0NoNo
Fee for running the call$0.01 a minute after included minutes$0.05 a minute for hosting$0.055 a minute for voice infrastructure
Models, voice, phone lineLiveKit Inference or your own keys, on topPassed through at cost, on topVoice from $0.015 a minute, model by usage, on top
Testingpytest or Vitest in your CI, plus simulationsEvals and Simulations, runnable from CISimulation and batch tests, plus AI QA on live calls
Self-hostYesNoEnterprise on-prem, per its homepage
Best forEngineers who want to own the codeBackend teams that want a hosted loopPhone teams that want flows and QA built in

The rest of this post is the reasoning behind each row, in the order the questions usually come up: how you build, what you pay, how you test, and what production asks for.

All three run the same loop

Underneath the marketing, every voice agent runs the same loop on every turn. The caller speaks. Speech to text turns the audio into words. A language model decides what to say, sometimes calling a tool to look up an order or book a slot. A text to speech voice says it back. Then the agent listens again.

The loop every voice agent runs
Caller audio Speechto text words Model + tools reply Voice speech One turnsame on all three
Where calls go wrong
talking over the callercutting in at a pausesilence while a tool runsa voicemail it thinks is a person
The loop is the same everywhere. What differs is who writes it, where it runs, and how you change it.

The loop itself is not where products differ much anymore. All three handle streaming audio, let you pick from many speech, model, and voice providers, and deal with interruptions. Where they differ is the shape of the thing you hand them. And that shape decides almost everything else: who on your team can change the agent, where your tests live, and what breaks when a provider changes something.

A program, a config, or a flow

The simplest way I have found to explain the three is to look at what “the agent” actually is on each one.

What “the agent” is on each platform
LiveKit AgentsA program you deploy
session = AgentSession(stt=inference.STT(...),llm=inference.LLM(...),tts=inference.TTS(...),)await session.start(room=ctx.room,agent=Assistant())
Python or Node.js. Runs as your worker, on LiveKit Cloud or your own servers.
VapiA config Vapi runs
{"transcriber": {...},"model": {...},"voice": {...},"server": {"url": ...}}
Set in the dashboard or the API. Vapi runs the call and sends events and tool calls to your server.
Retell AIA flow Retell runs Greet Qualify Book Transfer Or a single prompt. Retell runs the call and calls your functions when a node needs data.
The same agent, described three ways. Each shape is easy for a different person on your team to change.

LiveKit: your agent is a program

LiveKit Agents is an open-source framework, under the Apache 2.0 license, for writing voice agents in Python or Node.js. You create a session with a speech to text model, a language model, and a voice, give it instructions and tools, and start it in a LiveKit room. A caller on the phone, a browser, or a mobile app joins that room, and your agent process talks to them. LiveKit’s quickstart says you can build and deploy a simple voice assistant in under ten minutes, and that is roughly right.

Two parts of the framework are worth knowing before you compare it with a hosted platform. Turn detection is a model, not a silence timer: LiveKit’s turn detector decides when the caller has finished speaking, at no extra cost for agents hosted on LiveKit Cloud, and its adaptive interruption handling tries to tell a real interruption apart from an “uh-huh.” And there is now a browser-based Agent Builder that makes a simple agent without code and exports it as a Python project. It does not support handoffs, tests, or model plugins, so treat it as a starting point rather than a place to stay. For phone calls, you connect a SIP trunk from a carrier such as Twilio or Telnyx, for inbound and outbound calls.

What you get is control. The agent is code, so it lives in your repository, goes through your code review, and can import anything else your product already has. If a tool needs to check stock or move a job in your system, it calls your service layer directly, with your tests around it. What you take on is everything that comes with code: someone has to write the conversation logic, decide how it is tested, deploy it, and watch it. Nobody outside engineering will change this agent.

Vapi: your agent is a config

Vapi is a hosted API. An assistant is a configuration: a transcriber, a model, a voice, a first message, and a server URL where Vapi sends events and tool calls. You set it up in the dashboard or through the API, attach a phone number, and Vapi runs the whole loop on its side. Your server only gets involved when the model calls a tool or when a call event arrives.

For anything bigger than one assistant, Vapi’s answer is squads: specialized assistants that hand a call to each other, such as a receptionist that passes billing questions to a billing assistant. Vapi’s older visual Workflows builder was retired on August 18, 2026, with squads as the recommended replacement, so if an older comparison praises Vapi’s flow builder, that part is out of date. If you want your own model in the loop, Vapi works with any OpenAI-compatible server as a custom LLM.

This is the fastest of the three to a real phone call if you already have a backend. The tradeoff is that the agent’s behavior is split: the conversation lives in Vapi’s config, and the business logic lives on your server. That split is fine for a small team. It gets harder when the config grows, because a long assistant definition with many tools and settings is easy to change and hard to review.

Retell: your agent is a prompt or a flow

Retell AI is also hosted, and it is built around phone calls. You can build an agent from a single prompt, or as a conversation flow: a visual graph of nodes where each node has its own instruction and the transitions between them are explicit. Retell runs the call and calls your functions when a node needs data, such as checking a calendar before offering a slot.

Retell’s phone tooling is the deepest of the three out of the box. You can buy US and Canada numbers inside Retell, or bring your own over elastic SIP trunking, with setup guides for Twilio, Telnyx, and Vonage and for contact-center systems like Genesys and Five9. If you need your own model, Retell opens a WebSocket to your server for each call and your server writes the replies.

The visual flow is the reason many teams pick Retell. A support lead or an ops person can read a flow and suggest a change, which is much harder with a JSON config or a Python file. The cost is the usual cost of flows: they are predictable, and they get rigid. Callers rarely follow the graph, so a flow needs good fallbacks, and a graph with forty nodes is its own maintenance job.

What it costs: the fee you compare and the bill you get

Here is why the per-minute price misleads. Each platform charges a fee for running the call, and that is the number people compare. But on every one of them, speech to text, the language model, the voice, and the phone line are billed on top, and together they can cost as much as the fee or more.

What each platform charges to run one minute of a call
LiveKit Cloud
$0.01
Vapi
$0.05
Retell AI
$0.055
LiveKit: after the minutes your plan includes. Vapi: hosting. Retell: voice infrastructure.
Then, on all three
speech to text, model, voice, phone line
The fees differ by five times. Everything below the line is billed on top on all three, and that is where your choices move the bill.

Here is what each one publishes today.

LiveKit Cloud’s Build plan is free and includes 1,000 agent session minutes a month. Ship starts at $50 a month with 5,000 minutes, Scale at $500 a month with 50,000, and minutes beyond what a paid plan includes are $0.01 each. Models come through LiveKit Inference or your own provider keys; Deepgram Nova-3 transcription, for example, is listed at $0.0048 a minute. Calls over your own SIP trunk are included up to the plan’s allowance (1,000, 5,000, or 50,000 minutes), then $0.004 a minute on Ship and $0.003 on Scale. If you self-host, the platform fee goes away and your own servers and on-call time replace it.

Vapi charges $0.05 a minute for hosting and passes model costs through at cost. On its pricing page today, Deepgram transcription is $0.0095 to $0.0099 a minute, an OpenAI model is $0.0077 to $0.0452, and an ElevenLabs voice is $0.0146 to $0.0238. Vapi’s own telephony is free, and a US outbound call through Twilio adds $0.014 a minute. Vapi’s calculator puts 1,000 minutes at $82 to $129 a month.

Retell lists $0.07 to $0.31 a minute, with $10 in free credits. The parts are $0.055 a minute for voice infrastructure, $0.015 for most voices ($0.040 for ElevenLabs Flash), the language model by usage, and $0.015 a minute for calls on Twilio or Telnyx numbers bought through Retell, with no charge for calls over your own SIP trunk. Automatic scoring of live calls, which Retell calls AI QA, is $0.10 a minute after the first 100 minutes.

The honest summary: at a few thousand minutes a month, the platform fee is not what will decide your bill. Your choice of model and voice will, along with how long your calls run. At very high volume, LiveKit’s lower fee and the option to self-host start to matter, but so does the cost of the engineers who run it. If you want a sense of what all of this costs to build and run end to end, I wrote about it in build vs buy for voice AI agents.

Testing: where your tests live

“LiveKit vs Vapi testing” is one of the searches our site shows up for, and it is the right question to ask early. A voice agent that works on your test call will fail on real callers in ways you did not script. The platforms take very different positions on where testing happens.

LiveKit treats tests as code. The framework has testing helpers for pytest in Python and Vitest in Node.js: you run the agent against text turns, assert on what it says and which tools it calls, and use an LLM judge for fuzzy checks such as “did it confirm the appointment time.” Those tests run locally or in CI like any other test. For longer conversations, LiveKit’s Agent Simulations play full simulated calls in parallel on LiveKit Cloud, in text or audio, and LiveKit suggests text tests on every commit and audio simulations nightly.

Vapi has two testing features. Evals play a mock conversation against an assistant and check the replies with exact match, regex, an AI judge, or tool-call checks. Simulations put an AI tester on a voice or chat call with your assistant. Vapi documents running evals from GitHub Actions against a staging assistant, and its config-as-code setup covers evals and simulations too.

Retell has the most built in for phone teams: an LLM playground, simulation tests, batch tests across a suite (which it says you can run from CI), and AI QA that scores live calls after launch. Two details are worth knowing. Testing is billed at the same rates as production calls, with no free sandbox. And if you bring your own model over Retell’s custom LLM WebSocket, you can only test it with a web or phone call.

If you are evaluating more than one platform, or you think you might switch later, keep your test cases out of any one vendor’s format. Write each case as plain data: who the caller is, what they want, what they will say, and what must happen by the end of the call. Then use each platform’s runner to play those cases, and score every result against the same rubric.

A test suite that survives a platform switch
Test cases
who is callingwhat they wantwhat they saywhat must happen
Runner
LiveKit: tests in your CIVapi: Evals and SimulationsRetell: simulation tests
Scoring
one rubricpass or fail per casecompare versions
dashedthe only layer that changes if you switch
Keep the cases and the rubric outside the platform. Then only the runner changes when you switch.

The scoring layer is the one teams most often skip, because a transcript feels like enough. It is not. Reading transcripts does not scale past a few dozen calls, and two people reading the same call will grade it differently. Scoring is also where we spend a lot of our own time. Tough Tongue AI scores every conversation against a rubric you write, and you can upload transcripts or recordings from any system through the API to score them the same way, so calls from LiveKit, Vapi, and Retell end up on one scale.

Production: phone lines, concurrency, and compliance

The demo call proves the loop works. Production asks a different set of questions: how calls reach the agent, how many can run at once, and what your security review will want to see.

Phone lines. All three take calls over SIP trunks from carriers like Twilio and Telnyx, which is what most production setups use. Each also offers its own numbers, with limits worth knowing. LiveKit Phone Numbers are US local and toll-free and take inbound calls only for now; LiveKit says outbound is coming. Vapi’s free numbers use US area codes and are inbound only, so outbound calling means importing a number from Twilio, Telnyx, or DIDWW, or connecting a SIP trunk. Retell sells US and Canada numbers at $2 a month and charges nothing extra for calls over your own trunk.

Concurrency. This is the limit teams hit first, usually on the first big outbound batch. LiveKit allows 5 concurrent agent sessions on its free plan, 20 on Ship, and up to 600 on Scale. Vapi allows 4 concurrent calls with no plan, 10 on Core at $29 a month, and 30 on Pro, with extra lines at $10 a month each. Retell includes 20 concurrent calls on every account, then charges $8 a month for each extra one, and a burst mode lets you go over your limit for $0.10 a minute more.

Compliance. If you handle health data, check the BAA before anything else, because it is priced very differently across the three.

LiveKitVapiRetell AI
SOC 2Type II, report under NDAType IIType 1 and Type 2
HIPAA BAAOn request, Scale and Enterprise plans$2,000 a month add-onSelf-signed, no extra fee, per its docs
GDPRCompliant, DPA availableCompliant, EU region availableCompliant, but no services run inside the EU
Self-hostYes, open sourceNoEnterprise on-prem, per its homepage

One caution on Retell: its compliance docs describe a self-signed BAA with no fee, while its pricing table lists a custom BAA under Enterprise. Confirm which one applies to your account before you sign anything.

Two things I would check that do not show up on any pricing page. First, test on real phone audio early. A browser test call sounds much cleaner than a caller on a mobile network, and turn-taking that feels perfect in the browser can cut people off on the phone. Second, decide early who gets paged when calls fail at 9 pm. On Vapi and Retell, the call infrastructure is the vendor’s problem, but your tools and your server are still yours. On LiveKit, more of it is yours, especially if you self-host.

How far non-engineers can go on each

One search our site shows up for asks this about Retell and Vapi directly: how deep do their no-code builders go before you need custom code? Today the answer is uneven.

Retell goes furthest. The conversation flow editor is the center of the product, and a non-engineer can build a working phone agent with branches, transfers, and booking in it. They will still need an engineer for anything that touches your own systems, because custom functions call your API.

Vapi has moved the other way. With Workflows retired, a multi-step call is now a squad of assistants that hand off to each other. Anyone can edit an assistant’s prompt in the dashboard, but deciding how a call is split across assistants, and what each one is allowed to do, is closer to engineering work than it was in a visual builder.

LiveKit is code first. The Agent Builder lets anyone make a simple agent and hear it, and it can export a Python project, but past a prototype an engineer owns it.

On all three, the part non-engineers cannot reach is the same: the tools that connect the call to your CRM, calendar, or database. Plan for it, because that is usually where the agent’s real value is. I compared the tools built for non-engineers in more detail in the best no-code voice AI agents.

How to choose

If you have already decided to build, most teams can pick in two questions. The first is about ownership: does the agent’s code need to live in your repository, or run on your own servers? The second is about who changes it: is the phone call itself the product, and will people outside engineering edit the conversation?

Pick by who owns the agent
Does the agent’s code need to live in your repo or on your servers?
Yes
LiveKit AgentsYou write, test, and run the agent. Pipecat is the other open-source option.
No, a hosted platform is fine
Is the phone call the product, and will non-engineers edit the flow?
Yes
Retell AIVisual flows, phone tooling, simulation tests, and call scoring in one product.
No, engineers will own it
VapiA hosted API you compose from providers, with your logic on your server.
Neither: the call is a standard sales job
Maybe don’t buildCalling warm leads, demos, and booking already exist as finished agents.
Ownership narrows the list first. Who edits the conversation settles it.

There is a third answer that is easy to miss when you are deep in SDK docs. If the conversation is a job a person used to do, such as calling every new lead, qualifying them, running a demo on Zoom, and booking the next meeting, you may not need to build at all. The platforms above give you a voice. The job is still yours to build on top of it: the pitch, the objections, the CRM notes, the handoff to a human, and the scoring. That is the layer Tough Tongue AI is, and I wrote a longer post on how to decide between building and buying.

P
ParisAI sales agent, calling a new lead
Live
Outbound callQualifyBook a meeting

“Hi, this is Paris. You asked about a demo this morning. Is now a good time?”

Start call
Before you build
Hear a finished sales agent do the job

If the job is calling warm leads, qualifying them, and booking the meeting, try the finished version first.

  1. Describe the call and what a good outcome looks like.
  2. Talk to it in the browser, then connect your SIP trunk or send it to a Meet or Zoom link.
  3. Read the transcript and rubric scores, and edit it in plain language.
25 free minutes. Paid plans start at $20 a month.

The loop is the easy part

LiveKit, Vapi, and Retell are all serious tools, and all three are better than they were a year ago. The loop at the center of a voice agent is close to solved on each of them. What is not solved is everything around it: what the agent should say when a caller goes off script, how you know a change made it better, and who is allowed to make that change.

So pick the platform whose shape matches the people who will own the agent. Engineers who want it in their repository will be happiest on LiveKit. A backend team that wants a hosted loop and its logic on its own server will move fastest on Vapi. A phone team that wants flows, tests, and call scoring in one place will like Retell. And whichever you pick, write your test cases and your rubric before the first real call, not after the first bad one.

If you are comparing these for a sales or admissions use case, I am happy to compare notes. Book 15 minutes with me. And if your calls often turn into demos, I wrote about what it takes to build a voice agent that joins Google Meet and Zoom, which none of the three has built in.

A
Ajitesh
Tough Tongue AI
Share