Skip to main content
Unmute is a declarative standard for voice agents. You describe the agent once, in YAML and Markdown. The compiler turns that package into a native project for the target you pick: Pipecat, LiveKit, or SLNG.

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 deploy pushes 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 in agent.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.
Unmute itself is not a runtime. It compiles ahead of time and hands the result to the target: a project you run, or a deployment SLNG runs for you.

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.