- Quickstart - the first deployment
- Prepare the package - target, version, and build files
- Choose the destination - login, organization, and region
- Supply runtime values - a dedicated secret set
- Deploy and verify - readiness and a complete interaction
- Every later deploy - update the existing agent
- Secrets-only updates - change values without rebuilding
- Advanced - warm instances, names, and customization
- Troubleshooting - symptom, cause, and fix
- Where to go next
Quickstart
Start with a package namedmy-agent and a target named pipecat.
Create a package first if you do not have one.
Install the Pipecat CLI
with its cloud commands; this needs Python 3.11 or later and uv:
Terminal
my-agent/:
Terminal
.env with only the deployed agent’s required values, as described below.
Unmute does not write a pcc-deploy.toml yet. You pass the agent
name, secret set and region to pipecat cloud deploy as flags. These examples
use my-agent-pipecat and my-agent-pipecat-secrets. Pick your own names.
Terminal — from my-agent/build/pipecat
ready, then deploy:
Terminal — from my-agent/build/pipecat
--region to secrets set and to deploy.
Finish with the interaction check.
1. Prepare the package
Merge this target into an existing package’stargets.yaml:
targets.yaml
map of target definitions
required
Targets the package can compile. The entry name selects
--target and the build folder.string
required
Use
pipecat for this hosting route.string
required
Exact framework version. This release supports
1.12.0; omitted or unsupported
versions are refused. The cloud CLI is installed separately from this runtime pin.targets.yaml.
See Pipecat support for model and transport limits.
compile validates the selected target before writing
my-agent/build/pipecat/. It needs no hosting login. Validation checks the
package and known capabilities; it does not make a successful provider request.
unmute deploy publishes SLNG agents or connects Twilio numbers. Pipecat uses
its own deployment command.
Keep the generated directory together as the build context. No custom
Dockerfile, container registry, or local Docker build is required for this path.
2. Choose the destination
Login authenticates the deployment operator. The selected organization decides where commands act; it is separate from model-provider accounts.organizations select saves that choice in the CLI’s local configuration.
Run organizations list before each deployment to confirm it.
For scripts, use --organization on deployment and secret commands with the
organization identifier from the listing. See the
organization commands
and account permissions.
Use an account permitted to manage agents and secrets in that organization.
Choose a hosting region
Terminal
--region to deploy. Unmute writes no manifest, so deployment_region
reaches nothing and the flag is the way to choose a region. eu-central is an example. Choose from regions list.
The secret set must use the same region:
Terminal — from my-agent/build/pipecat
params.world_part are separate model settings. See
regional infrastructure.
3. Supply runtime values
Declare secret names in the package and provision their values separately. Use the generated.env.example to prepare a dedicated
deployment .env.
This example shows placeholders only. Replace the names with those your package
requires, and fill their values privately:
.env — example values only
Do not upload the operator’s unrelated development credentials.
On a
daily-sip route, remove helper-only entries from the file uploaded to the
agent. Keep entries marked as shared. See the phone guide
for each route’s requirements.
--file sends every entry in the file. The generated Dockerfile reads no secret
values, and .dockerignore excludes .env. Keep the value file out of source
control. Unmute preserves this .env when it recompiles, but rewrites
.env.example with the current requirements.
Provider keys come from the chosen provider; the model pages
link to setup instructions. Prompt variables hold call state
and do not supply credentials.
4. Deploy and verify
Runpipecat cloud deploy my-agent-pipecat --secrets my-agent-pipecat-secrets
inside my-agent/build/pipecat/. The command builds the directory’s Dockerfile
in Cloud. It creates the agent with that name, or asks to update a matching one.
See the deploy reference.
The agent name is yours to choose. Use the same name on every deploy. The
destination organization lives in your CLI configuration.
Check the deployment, then open a session through the transport your package
uses. For a browser session supported by the generated project, select a Cloud
public API key and start a Daily session:
Terminal
organizations keys create if none exists. This public
session key is separate from the deployment login and your model-provider keys.
Use the returned session connection details in your supported client. Phone
routes need their own carrier setup and test.
A greeting alone does not prove input works. Allow microphone access and unmute the
client before speaking. Then exercise one tool if the package uses tools.
This is deployment smoke acceptance; application-specific end-to-end tests come
next.
Terminal
Every later deploy
Edit the authored prompts, tools, supported local handlers, or model settings. From the directory containingmy-agent/:
Terminal
.env.example before deploying. A new provider, renamed
setting, or new tool may need another runtime value. Update the set only when
its values change; an unchanged code deployment uses its existing values and
needs no local secrets file. Keep the same organization, agent name, and secret
set to update the intended resource.
Cloud builds can reuse an identical build. Compare the selected build with your
intended version, then repeat the interaction check. Compilation replaces the
generated directory except .env. Any hand-edited generated Python is replaced.
Normal updates let active sessions finish on their existing image. New sessions
move to the new deployment as it rolls out. A failed deployment can leave the
previous ready version serving requests. See
deployment behavior.
To return to a previous image, select its build ID from deployment history and
follow redeploying a previous build.
This does not restore earlier secret values or authored files.
Secrets-only updates
Changing the value of an existing runtime name requires no compile or new image. Run these commands in the generated directory, using the existing set and region:Terminal — from my-agent/build/pipecat
set adds new names and replaces supplied values; names omitted from the file
remain in the set. Removing a line from .env therefore does not remove a
deployed secret. Remove an obsolete name explicitly:
Terminal
ready after
changes. Updating the set does not refresh running agents. Each deployment using
it needs a forced rollout, as described in
Pipecat secret management.
Read the current image’s build ID from deployment history. Replace the
placeholder below with that ID to roll out the same image without rebuilding:
Terminal — from my-agent/build/pipecat
--force replaces running instances and can interrupt active sessions.
Verify a fresh interaction with the new value. Updating a stored value does not
create or revoke its provider key. Do that with the provider’s key management.
If the code must start reading a new name, also change the package and recompile.
Advanced
Keep an instance ready
Pass--min-agents to deploy:
Terminal — from my-agent/build/pipecat
warm_instances in targets.yaml reaches
nothing yet. Use the flag. A positive value adds a standing cost. Zero lets the platform scale to zero.
A warm instance avoids cold starts. Some phone routes need it to answer within
the carrier’s session window; see Pipecat over Twilio.
Renaming the agent
Changing the package or target name creates another deployment; it does not move the existing one. A second hosting region also needs a distinct agent name and a secret set in that region. Compile the new target, provision its set, deploy, and verify an interaction. Then point clients and carrier routes at the new name before retiring the old agent. Forcloud-websocket, update the service host in carrier markup; for
daily-sip, redeploy the helper with its new AGENT_NAME.
See the phone guide for route-specific steps.
Customize supported code
Use native model settings and tools first. Local handlers compile into the project; shared Python modules and dependency limits are covered in Going live. Unmute has no general Pipecat build hook or arbitrary dependency declaration. Editing generated files does not create a supported extension. Pipecat’s deploy flags carry the host settings. Keep them in a deployment script outsidebuild/, so every deploy uses the same ones.
Use the deployment reference
for host options and the target reference for settings
Unmute owns.
Troubleshooting
Where to go next
Going live
The package lifecycle and supported customization.
Pipecat target
Supported models, transport choices, and target settings.
Credentials
Declare runtime names separately from their values.
Phone calls
Connect and verify the carrier route your package uses.