# Unmute > A declarative standard for voice agents. Describe the agent once, compile it to Pipecat, LiveKit, or SLNG. > ## 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](https://unmute.ai/index.md): A declarative standard for voice agents. Describe the agent once, compile it to Pipecat, LiveKit, or SLNG. - [Installation](https://unmute.ai/start/installation.md): Install Unmute on macOS, Windows, or Linux and check the one Quickstart prerequisite. - [Quickstart](https://unmute.ai/start/quickstart.md): Scaffold an agent, add two keys, and talk to it in your browser. - [Coding agents](https://unmute.ai/start/coding-agents.md): Optional setup for supported coding assistants, followed by one checked voice-agent build. - [How Unmute works](https://unmute.ai/start/how-unmute-works.md): The four stages between your package and what each target runs. - [Your first agent](https://unmute.ai/build/your-first-agent.md): The smallest real agent: a prompt, four models, and one file that says who is answering. - [How a package fits together](https://unmute.ai/build/how-a-package-fits-together.md): One rule explains the whole file: every list on an agent has a matching top-level block. - [Variables](https://unmute.ai/build/variables.md): Declare a value once, fill it during the call, and read it only where it is needed. - [Credentials](https://unmute.ai/build/credentials.md): Give the agent an API key without putting one in your package. - [Pre-fetch](https://unmute.ai/build/prefetch.md): Run a lookup before the call starts, when you already have everything it needs. - [Tools](https://unmute.ai/build/tools/overview.md): What a tool is, the eight ways one can run, how each target treats them, and how you attach one to an agent. - [Webhook tools](https://unmute.ai/build/tools/webhook.md): Call your own API: a URL from the environment, a path that renders per call, and values the model never sees. - [Python tools](https://unmute.ai/build/tools/python.md): A handler of your own in the package: what it receives, what it returns, and where it is copied. - [MCP servers](https://unmute.ai/build/tools/mcp.md): Point the agent at a remote MCP server and let it offer that server's tools. - [Prebuilt tools](https://unmute.ai/build/tools/prebuilt.md): The tools the runtime already has: a closed registry with one entry today. - [Hosted tools](https://unmute.ai/build/tools/hosted.md): Reference a tool your SLNG organisation already has by its exact name: no hash, no mirror, no pull required for SLNG. - [Knowledge bases](https://unmute.ai/build/tools/knowledge.md): Point a tool at a folder of your own documents, and the agent answers from them instead of guessing. - [Orchestration](https://unmute.ai/build/orchestration/overview.md): Three ways to split one agent into parts, and where each is taught. - [Your first task](https://unmute.ai/build/orchestration/first-task.md): Add one task to the agent you already have, one key at a time, until it knows for itself when its work is done. - [Tasks](https://unmute.ai/build/orchestration/tasks.md): Run one step of a call with its own prompt and tools, save typed values, and return control. - [Task groups](https://unmute.ai/build/orchestration/task-groups.md): Run several tasks in a fixed order. - [Handoffs](https://unmute.ai/build/orchestration/handoffs.md): Move the caller to an agent with different instructions and tools. - [Choosing a structure](https://unmute.ai/build/orchestration/choosing-a-structure.md): Tools, tasks, task groups, or a second agent. Which split to reach for, and when. - [Architecture](https://unmute.ai/build/architecture/overview.md): Choose a pipeline, switch an existing agent, and check that its models and bindings agree. - [Cascade](https://unmute.ai/build/architecture/cascade.md): Build an agent with separate listening, reasoning, and speaking models, then extend it with tasks and state. - [Realtime](https://unmute.ai/build/architecture/realtime.md): Run one model for spoken conversation, then choose turn detection, tools, and an optional separate voice. - [Live](https://unmute.ai/build/architecture/live.md): Run an OpenAI live voice agent and give it a reasoning backend for tools and knowledge. - [Designing declared state](https://unmute.ai/best-practices/state-design.md): Choose facts that help the next task, keep requested changes separate from saved outcomes, and avoid repeated questions. - [Reduce context sharing step by step](https://unmute.ai/best-practices/context-scope.md): Start with conversation continuity, then let each task read only the facts it needs. - [Making a task actually run](https://unmute.ai/best-practices/step-scoping.md): A task the model can skip is a task that never writes a saved value. What to give a task so it gets entered, and what to take away from its owner. - [Writing prompts for a voice](https://unmute.ai/best-practices/prompt-writing.md): A text to speech voice reads what you write, exactly as you write it. The rules that follow from that, and the one that a model will read out loud if you break it. - [Checking what the agent did](https://unmute.ai/best-practices/verifying-behaviour.md): A transcript tells you what the caller heard. It does not tell you what the agent recorded, and the two disagree more often than you would expect. - [The dev loop](https://unmute.ai/dev/overview.md): What unmute dev actually does, how to pick a target, and where the logs are. - [Tracing](https://unmute.ai/tracing/overview.md): See what happened inside a call: what the caller said, what the model decided, and which tools ran. - [Coval](https://unmute.ai/tracing/coval.md): Send spans to Coval so each trace is attached to the simulation that produced the call. - [Langfuse](https://unmute.ai/tracing/langfuse.md): Send spans to Langfuse to watch live calls and debug one conversation at a time. - [Optimizing your agent](https://unmute.ai/optimization/overview.md): Settings that speed up a call, why each one matters, and how to write them in agent.yaml. - [Reading the latency numbers](https://unmute.ai/optimization/latency.md): Where the time goes in a voice turn, and what each number under a turn means. - [What to fetch before the call](https://unmute.ai/optimization/prefetch.md): How to decide which lookups belong before the greeting, and the traps in moving them there. - [Setting how long the agent waits](https://unmute.ai/optimization/turn-taking.md): pace and endpointing_delay: the two settings that decide how long a caller waits before the agent answers. - [SLNG Execution Layer](https://unmute.ai/optimization/execution-layer.md): A scaffolded package binds SLNG speech models by design, and those models run on SLNG's Execution Layer. - [Context Router](https://unmute.ai/optimization/context-router.md): The optimization layer for thinking: repeated turns come back from a cache instead of calling your model. - [Regional infrastructure](https://unmute.ai/optimization/regional-infrastructure.md): Keep STT, LLM, and TTS services close to your users, with separate settings for model gateways, workers, and media. - [Going live](https://unmute.ai/deploy/going-live.md): Create a package, choose a host, and deploy it with the right configuration and credentials. - [Deploy to SLNG](https://unmute.ai/deploy/slng.md): Deploy a package to SLNG, update the existing agent, and manage its credentials. - [Go live on LiveKit Cloud](https://unmute.ai/deploy/livekit-cloud.md): Create a LiveKit Cloud agent from your package, then update its code and runtime secrets. - [Go live on Pipecat Cloud](https://unmute.ai/deploy/pipecat-cloud.md): Compile your package, choose an organization, deploy it, and update its code or secrets. - [Phone calls](https://unmute.ai/telephony/overview.md): How a phone call reaches your agent, which routes exist, and what the transport decides. - [Outbound calls](https://unmute.ai/telephony/outbound-calls.md): Make the agent dial out, and give it the values it needs before the phone rings. - [Inbound calls](https://unmute.ai/telephony/inbound-calls.md): Take a real call from your own phone number, once your agent is deployed. - [Get your Twilio details](https://unmute.ai/telephony/twilio.md): Which value in the Twilio console fills which name in your connection file, per route, and the console setup each route needs. - [LiveKit over Twilio](https://unmute.ai/telephony/livekit-twilio.md): The sip route end to end: the trunk on the Twilio side, the two records LiveKit needs, and what a rename breaks. - [Pipecat over Twilio](https://unmute.ai/telephony/pipecat-twilio.md): The cloud-websocket route end to end: the markup your number points at, the values that have to agree, and the three ways the call goes quiet. - [Human transfers](https://unmute.ai/transfers/overview.md): Handing the caller to a person: cold, warm, and why the route decides which you get. - [Transfers on LiveKit](https://unmute.ai/transfers/livekit.md): The only route with both cold and warm transfer, over a Twilio SIP trunk. - [Transfers on Pipecat over Twilio](https://unmute.ai/transfers/pipecat-twilio.md): Cold transfer through your own Twilio number, with no server of yours in the call path. - [Targets](https://unmute.ai/targets/overview.md): What a target is, what targets.yaml holds, and how one package compiles to two runtimes. - [The Pipecat project](https://unmute.ai/targets/pipecat.md): What unmute compile writes for a Pipecat target, and how to run it without Unmute. - [The LiveKit project](https://unmute.ai/targets/livekit.md): What unmute compile writes for a LiveKit target, and how to run it without Unmute. - [The SLNG deployment body](https://unmute.ai/targets/slng.md): What unmute compile writes for a slng target, what SLNG runs for you, and what the package may not ask for. - [Speech to text](https://unmute.ai/models/stt.md): The listen binding: every key it takes, the vendors each target can construct, and how one SLNG key reaches many models. - [Text to speech](https://unmute.ai/models/tts.md): The speak binding: every key it takes, the vendors each target can construct, and how one SLNG key reaches many voices. - [Reasoning model](https://unmute.ai/models/llm.md): The think binding: every key it takes, the vendors each target can construct, and what happens when yours is not listed. - [Live model](https://unmute.ai/models/live.md): Configure the OpenAI live model, its voice, and the backend that runs tools. - [Turn detection](https://unmute.ai/models/turn-detection.md): The turn binding: every key it takes, and how each target decides the caller has finished speaking. - [Agent configuration](https://unmute.ai/reference/agent-yaml.md): Every block of the agent file, and the tool files beside it. - [Manifest](https://unmute.ai/reference/manifest.md): Keep agents and coding assistants within your company's approved choices. - [Targets configuration](https://unmute.ai/reference/targets-yaml.md): Every field of a target, plus the connection files it points at. - [Connection configuration](https://unmute.ai/reference/connections-yaml.md): One file, one phone route: the transport, the carrier, and the environment names that route needs. - [Variables reference](https://unmute.ai/reference/variables.md): Types, sources, where a variable can be used, and how it reaches a tool. - [Secrets](https://unmute.ai/reference/secrets.md): Names only, never values: how a credential reaches the agent and its tools. - [CLI reference](https://unmute.ai/reference/cli/overview.md): The command tree, exit codes, warnings, version, and shell completion. - [unmute init](https://unmute.ai/reference/cli/init.md): Create an agent package, or give a coding assistant a draft with your company rules attached. - [unmute manifest](https://unmute.ai/reference/cli/manifest.md): Save company rules once, then use them to build an agent. - [unmute validate](https://unmute.ai/reference/cli/validate.md): Check a package against its targets before you compile or run it. - [unmute pull](https://unmute.ai/reference/cli/pull.md): Optional, and only for a livekit or pipecat build: fetch a hosted tool's definition into your package so that compile can trust it offline. SLNG needs none of this. - [unmute compile](https://unmute.ai/reference/cli/compile.md): Write the compiled project for each target, and read the report written next to it. - [unmute deploy](https://unmute.ai/reference/cli/deploy.md): Validate, compile and push a package to SLNG in one command. - [unmute dev](https://unmute.ai/reference/cli/dev.md): Every flag, with defaults, and what the command does not do. - [unmute resources](https://unmute.ai/reference/cli/resources.md): See the tools, MCP servers and phone numbers your SLNG organisation offers. - [unmute skill](https://unmute.ai/reference/cli/skill.md): Give your coding assistant the workflow to build and check an Unmute agent. - [Community](https://unmute.ai/community/overview.md): Where to ask a question, where to file an issue, and how to contribute to Unmute. - [Contributing](https://unmute.ai/community/contributing.md): What a pull request to Unmute needs: the issue, an example that uses your feature, a video, a README and updated docs. - [Changelog](https://unmute.ai/changelog.md): What changed in each release of the Unmute CLI, newest first.