Skip to main content
targets.yaml says where the agent runs. Nothing about the agent’s behavior belongs here.
targets.yaml

All keys

map
required
Target definitions selected by --target. Accepts one or more target instance names. Required; omission is refused.
string
required
Target provider. Accepts livekit, pipecat, slng. Required; omission is refused.
string
Framework version pinned in an emitted project. Accepts exact x.y.z in the supported window for LiveKit and Pipecat. Required for LiveKit and Pipecat; omit on SLNG, which emits no framework project.
map of strings
LiveKit package overrides; other providers do not consume them. Accepts known LiveKit package names to semantic versions. If omitted, use the catalog’s package pins.
string
SDK used by an emitted project. Accepts python when written. If omitted, code targets emit Python. Omit on SLNG, which refuses this key.
string
This target’s phone route; illegal when the package has no phone use. Accepts connection file stem. If omitted, there is no phone route; required for LiveKit or Pipecat telephony.
string or list of strings
Deployment regions; more than one is LiveKit only. LiveKit accepts us-east, eu-central, or ap-south, with no duplicates. Pipecat forwards one non-empty platform region name. Both use platform placement when omitted. SLNG requires exactly one of its 13 world parts; omission and any are refused. See the target pages for each contract.
integer
Instances the platform holds ready, so a call is not waiting on a cold container. Accepts zero or more; Pipecat only. If omitted, no minimum is emitted; Pipecat can scale to zero.
map
Per-target model overrides. Accepts existing model entry names to model definitions. If omitted, use the package’s model entries without overrides.
The map key is the target instance name. It is what --target takes and what names the output directory, build/<name>/. Two targets may use the same provider with different settings, for example pipecat_twilio and pipecat_telnyx. That is the whole list. A target says where the agent runs and, for a phone agent, which one connection carries the call. unmute compile compiles a project only for livekit and pipecat today; a slng target compiles to a deployment body instead, which Deploy to SLNG covers. vapi and deepgram used to be target names too. Both are retired, and unmute validate refuses either one:
Deepgram stays a model vendor: what the refusal calls out is the target name, never the vendor.

Framework versions are exact

For LiveKit and Pipecat, write all three numbers, such as 1.10.0. Unmute installs exactly what the target declares. It never widens the pin or silently upgrades it for a feature. This Unmute release supports exactly livekit-agents 1.8.1 and exactly pipecat-ai 1.10.0. Any other version is refused.

Deployment regions

deployment_region accepts one region or a list. Pipecat accepts exactly one; deploying there again means another target and agent name. LiveKit emits one lk agent create --region command per declared region. A LiveKit region is chosen when the agent is created and cannot be changed in place. LiveKit accepts us-east, eu-central, or ap-south and refuses other names. Pipecat forwards its platform’s region name as written. A model endpoint’s region is separate and stays in that model’s params or endpoint_env. See regional infrastructure for complete worker, STT, and TTS examples plus LiveKit media guidance. An empty list entry or duplicate region is an error. See the region vocabulary comparison before choosing model gateways and worker regions.

Instances held ready

With none declared the platform scales to zero when idle, so the first call after every quiet period waits for a container to start. On a phone route that wait can outrun the call: the session expires and nobody is answered at all. One instance held ready removes it, and bills for that instance whether or not anyone calls. The number lands in pcc-deploy.toml as [scaling] min_agents, which is why it belongs here rather than on the deploy command. pipecat cloud deploy --min-agents 1 does the same thing for one deploy, and the manifest is rewritten by every unmute compile, so a [scaling] block added to it by hand does not survive. Pipecat only. LiveKit refuses it: livekit.toml holds the project subdomain and the agent id and nothing else, and on LiveKit Cloud a warm production replica is a property of the billing plan rather than something the compiler can write. See Pipecat over Twilio for a deployed example.

Package pins

pins is a LiveKit-only escape hatch for packages already known to the LiveKit driver. Unknown package names and versions below the catalogue floor are errors. On a pipecat target the map validates with no error, and nothing reads it. SLNG refuses a non-empty pins map. Leave it out on both targets.

models overrides

Keyed by the entry name from agent.yaml, and taking the same fields as an entry there. Use it when a target cannot run an entry as defined, or runs its own better. An override replaces the entry: a field it does not set is gone, not inherited from the base entry. Four fields are the exception. pace, endpointing_delay, semantic_endpointing, and prompt_suffix carry forward from the base entry whenever the override leaves them empty, because every target running this package wants the same turn timing and the same prompt directive. An override may replace endpointing_delay or semantic_endpointing. It cannot author pace or a different prompt_suffix.

The phone route is not here

A target names one connection and declares nothing else about how a call reaches it:
targets.yaml
The mechanism, the carrier, and the account credentials live in that one file. See connections/<name>.yaml. Three fields used to sit on the target. Writing any of them here is refused, and the refusal names the new home:
Where the target names no connection, the first two messages say in the connection file this target should name instead of a file name.

Where to go next

connections/<name>.yaml

The route: transport, carrier, and the names it needs.

Targets

What each generated project looks like.