Skip to main content
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 name is also the directory. Each created file is printed. 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:
The picker lists the default first. The chosen file is copied into the package as 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, so targets.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:
The LiveKit worker also needs 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.