> ## Documentation Index
> Fetch the complete documentation index at: https://unmute.ai/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Unmute compiles to exactly three targets. Pipecat and LiveKit are code targets: compile writes a Python project you run. SLNG is a hosted target: compile writes a deployment body and SLNG runs the agent, so it has no `unmute dev`. Those three are the only values `provider` accepts in `targets.yaml`. Deepgram and ElevenLabs appear in these docs as model vendors, which is not the same thing as a target, and `slng` is both.
> The Go structs in `internal/spec` and `internal/ir` are the schema truth. Check a field against them, or run `unmute validate`, rather than against what you remember.

# Unmute

> A declarative standard for voice agents. Describe the agent once, compile it to Pipecat, LiveKit, or SLNG.

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 <Tooltip tip="A README written for your build alone. It lists the exact keys, commands and phone steps that build needs.">runbook</Tooltip>. 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.

<Columns cols={2}>
  <Card title="One package" icon="file-code" href="/build/how-a-package-fits-together">
    `agent.yaml`, your prompts, your tool files. Read it and you know what the
    agent does.
  </Card>

  <Card title="Three targets" icon="boxes" href="/targets/overview">
    The same package compiles to Pipecat, to LiveKit, and to SLNG. Same
    prompt, same tools, same behavior.
  </Card>
</Columns>

## 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.

<Columns cols={2}>
  <Card title="Build your first agent" icon="bot" href="/build/your-first-agent">
    Read, validate, and compile the canonical agent package.
  </Card>

  <Card title="Configuration files" icon="file-code" href="/reference/agent-yaml">
    Jump to complete key lists for every package file.
  </Card>
</Columns>

## 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

<Columns cols={2}>
  <Card title="Install" icon="download" href="/start/installation">
    Get the `unmute` binary.
  </Card>

  <Card title="Quickstart" icon="rocket" href="/start/quickstart">
    From nothing to an agent you can talk to in your browser.
  </Card>

  <Card title="How Unmute works" icon="settings" href="/start/how-unmute-works">
    The four stages between your package and what each target runs.
  </Card>

  <Card title="Build the agent" icon="graduation-cap" href="/build/your-first-agent">
    The guided path: one agent, then tools, then everything else.
  </Card>
</Columns>

## 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](/community/contributing) says what a pull
request needs.

<Columns cols={2}>
  <Card title="Discord" icon="message-circle" href="https://discord.gg/kxZactmWj">
    Ask a question, show what you built, and talk to the people who maintain
    Unmute.
  </Card>

  <Card title="GitHub" icon="github" href="https://github.com/slng-ai/unmute">
    Read the source, file an issue, and open a pull request.
  </Card>

  <Card title="Contribution guidelines" icon="heart-handshake" href="/community/contributing">
    The issue, an example that uses your feature, a video, a README and the
    docs page.
  </Card>

  <Card title="Changelog" icon="tag" href="/changelog">
    What shipped in each release, newest first.
  </Card>
</Columns>
