unmute init my-agent writes a working package and asks nothing. Add
--from-manifest when the new package has to follow a contract your
organization saved on this computer.
On this page:
- With a name - the starter package
- For another target -
--target, with no questions - With no name - the interactive console
- From a saved manifest - the picker and guided setup
- It never writes into an occupied directory
- What the scaffold contains - the six files
- The scaffolded target - LiveKit, and the keys it needs
- Command reference - flags and help
- Troubleshooting - symptoms, causes and fixes
- Where to go next
With a name
cd into it and
validate, compile and dev all run with no argument.
This is the whole command. It reads nothing saved on your computer and asks no
questions, so the same six files appear every time.
For another target
--target takes livekit, pipecat or twilio. It writes the starter the
console writes after you pick that target, and still asks nothing. An SLNG
package needs a deployment region, and only the console asks for one, so
--target slng is refused: run unmute init in a terminal and pick SLNG there.
For twilio that is one inbound phone channel, Deepgram and ElevenLabs inside
ConversationRelay, an OpenAI model through the
SLNG Context Router, and connections/phone.yaml
with the four TWILIO_* names. The router’s agent_id starts as the package
name plus -v1. See the Twilio target.
--target needs a name, and it cannot be combined with --from-manifest,
because a manifest picks the target itself.
With no name
In a terminal,unmute init with no argument opens an interactive console. It
asks for the name, the models and the target, and it can validate and compile
the result for you.
Pick a phone route there and the scaffold writes one more file,
connections/<name>.yaml, holding the transport, the carrier and the
environment variable names that route needs. The target only names it. See
connections/<name>.yaml.
Outside a terminal, a name is required:
From a saved manifest
A manifest is your organization’s list of allowed models, languages, regions, targets, tools and tracing.--from-manifest opens a picker of the contracts
saved on this computer, then guides the package through the choices the chosen
one allows:
manifest.yaml, comments included, and agent.yaml names that copy. Validation
and compilation read the copy, so another computer needs nothing saved. Editing
the saved contract later does not change a package already created.
This flag is the only way a contract reaches a new package. Plain
unmute init <name> writes the starter scaffold even when a default is saved.
The picker needs a terminal, so a coding assistant cannot run it: create the
package yourself, then ask the assistant to complete it. See
Company manifests for what a contract holds and
unmute manifest for saving one.
Guided setup cannot collect a custom model endpoint or a SLNG Context Router
upstream, so it leaves those bindings out of the offered choices. Write them by
hand afterwards, following the relevant model reference.
It never writes into an occupied directory
What the scaffold contains
The scaffold binds SLNG speech models and an OpenAI reasoning model, so one
SLNG_API_KEY covers speech to text and text to speech. The starter prompt is a
real one, and it is meant to be replaced.
The scaffolded target
The target is LiveKit Agents, sotargets.yaml holds one instance named
livekit, agent.yaml carries a matching LiveKit turn detector, and
unmute compile writes build/livekit/. Pipecat is equally supported. Pick it
with --target pipecat or in the interactive console, or edit the package by hand as
Targets describes.
targets.yaml
.env.example lists the two values you supply:
LIVEKIT_URL, LIVEKIT_API_KEY and
LIVEKIT_API_SECRET, but they are not values you fill in. unmute dev supplies
them locally; LiveKit Cloud or a self-hosted operator supplies them at deploy
time. They remain in compile-report.json and the runtime startup checks.
The top level
.env.example is a starter list. After unmute compile,
build/<target>/.env.example lists the values you supply for that target;
compile-report.json lists every required environment name.Command reference
Terminal — unmute init --help
Troubleshooting
Where to go next
unmute validate
Check the package you just made.
Company manifests
Save the rules a new package must follow.
The Unmute skill
Install the workflow your coding assistant follows.
Choose the agent structure
Add tasks or handoffs when the use case needs them.