The problem
A voice agent is a small idea buried in a lot of plumbing. Speech in, a model that thinks, speech out, a way to end the call, a way to hand the caller to a person. Every framework asks you to write that plumbing again, in its own shape. So teams end up here:- The prompt, the tools, and the phone number live in the same file as the session setup, the audio pipeline, and the retry logic.
- Changing the voice means reading framework code.
- Trying a second framework means rewriting the agent.
- Nobody can answer “what does this agent actually do” without reading Python.
What Unmute does
Unmute splits the agent from the code that runs it. You describe the agent once: who it is, which models it uses, which tools it can call, how it hands work to another agent, what happens on a phone call. That description is the package. Nothing in it belongs to one framework. Then you pick a target. A target is where the agent will run, and Unmute compiles the package into what that target expects:- Pipecat and LiveKit are code targets. You get a Python
project with a Dockerfile, a
.env.example, and a . The project does not import Unmute, and Unmute is not in the call path. - SLNG is a hosted target. You get a deployment body,
unmute deploypushes it, and SLNG runs the agent.
One package
agent.yaml, your prompts, your tool files. Read it and you know what the
agent does.Three targets
The same package compiles to Pipecat, to LiveKit, and to SLNG. Same
prompt, same tools, same behavior.
What a package looks like
An Unmute package keeps the agent inagent.yaml, its prompt in a Markdown
file, and the target choices in targets.yaml. The guided path shows the
complete files, then explains each block where you first need it.
Build your first agent
Read, validate, and compile the canonical agent package.
Configuration files
Jump to complete key lists for every package file.
Who it is for
- Teams who ship voice agents and want the agent’s behavior in files a reviewer can read, not in framework code.
- Teams who want to compare Pipecat, LiveKit, and SLNG without writing the agent three times.
- Anyone who wants what the agent does reviewable in a pull request.
Where to go next
Install
Get the
unmute binary.Quickstart
From nothing to an agent you can talk to in your browser.
How Unmute works
The four stages between your package and what each target runs.
Build the agent
The guided path: one agent, then tools, then everything else.
Join the community
Unmute is open source and MIT licensed. Anyone can use it, and anyone can contribute to it. Bring a question, show what you built, or send the change yourself. The contributing guide says what a pull request needs.Discord
Ask a question, show what you built, and talk to the people who maintain
Unmute.
GitHub
Read the source, file an issue, and open a pull request.
Contribution guidelines
The issue, an example that uses your feature, a video, a README and the
docs page.
Changelog
What shipped in each release, newest first.