100x More Reliable Voice Agents
Luke and Nico work at SLNG.ai. Today they launch Unmute, an open declarative standard for voice agents, under an MIT license. The problem they are attacking: every voice agent platform has its own definition of what an agent is. Build on ElevenLabs, VAPI, Retell or Bolna and your agent stays there. Even across the open frameworks, a Pipecat agent does not port cleanly to LiveKit. You pick a stack, you build inside it, and your voice IP ends up owned by whichever one you started with. - Three assumptions Unmute argues are wrong: that voice agents are a sequential turn-taking pipeline, that the LLM should be the decision-making spine of the call, and that you must choose between rigid IVR and a long prompt followed by hope - Declared execution: tool calls, data flows, step transitions and failure handling are declared and enforced by the compiled package, and the LLM becomes an optional resource that has to earn its place - Determinism as a dial, set turn by turn. Lock a regulatory disclosure, leave an open-ended objection generative, in the same call - Why single-prompt agents break: the model reads every rule at every turn, goes off topic, picks some rules and ignores others, and nobody can tell which part caused the failure - The salon example, built twice. On the left, one agent, one prompt, ten tool descriptions read on every turn, and a section whose only job is telling the model which of four steps it is on. On the right, a concierge with one tool and a separate complaint specialist - The measured result in Langfuse: same conversation, same step count, but more than double the token usage on the single-prompt version, plus fewer turns and lower latency on the split one - The counterintuitive part: the four split prompts contain nearly double the total text, but you only pay for what sits in front of the model right now. Someone asking what time you open should not pay for the refund policy - Structural guarantees over instructions: the booking step is not handed to the model until a confirmed number exists, so a booking without confirmation is impossible rather than merely unlikely - Prefetch before the greeting. Most agents spend the first thirty seconds asking things they could have known. A tool that takes no arguments is not a real tool - Typed variables with declared scope. A value can appear in exactly one prompt, pasting it elsewhere is a build error, and tools get values injected rather than asking the model to retype them - The live build: one paragraph describing the problem, a newly installed skill, Claude Code writing the package, then unmute compile and unmute dev to a working agent you can call If you are building voice agents and you have watched a great demo fall apart in production, the argument here is that the prompt was never the specification, and the fix is structural rather than better wording. Links and Resources - Unmute: https://unmute.ai/ - Unmute on GitHub: https://github.com/slng-ai/unmute - Pipecat: https://www.pipecat.ai/ - LiveKit Agents: https://livekit.io/agents - Langfuse: https://langfuse.com/ - Agentic AI Foundation: https://agenticaifoundation.org/ #VoiceAI