The four stages
1
Load
Unmute reads your files:
agent.yaml,
targets.yaml, your tool files, your
connections, your prompts, and your local
Python handlers.Decoding is strict. An unknown field is an error, not a shrug, and every
error carries the file and the line.2
Build
Names become one description of the agent. Model names point at model
definitions. The names in an agent’s lists are resolved to the tasks, task
groups, handoffs and tools they mean. Per-target overrides are applied, and
a telephony route is picked from what the target declares.This description knows nothing about Pipecat or LiveKit.
3
Validate
The description is checked against what your chosen target can do.Something the target cannot do stops the build, before anything is
written. Something it does differently while keeping your contract is a
warning: the build finishes and the warning tells you the difference.
4
Generate
One driver turns the description into files for one target.
validate and compile run the same first three stages, so a package that
validates cannot surprise you at compile time.What you get
unmute compile writes one directory per target under build/. Name the
package, as in unmute compile my-agent, or leave the argument out to compile
the directory you are standing in.
unmute deploy pushes agent.json
and SLNG runs the agent.
Two files in every build answer “what did it decide?”: README.md is the
runbook for that build, and records every binding,
resolved route and derived number the compiler used.
Where to go next
Build the agent
Start the guided path with the smallest real agent.
Targets
What a target is, and what each compiled project looks like.