Skip to main content
Deploy your Unmute package as a managed Pipecat Cloud agent. Unmute writes the runnable project; Pipecat Cloud builds and hosts it. Change the authored package, then compile again before deploying code changes. On this page:

Quickstart

Start with a package named my-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
Run these from the directory containing my-agent/:
Terminal
Fill .env with only the deployed agent’s required values, as described below. Read agent_name, secret_set, and any region in the generated pcc-deploy.toml. These examples use the names derived from my-agent.
Terminal — from my-agent/build/pipecat
Wait until the set reports ready, then deploy:
Terminal — from my-agent/build/pipecat
If the manifest declares a region, pass that same region to secrets set. If it has no secret_set, skip creating one. Finish with the interaction check.

1. Prepare the package

Merge this target into an existing package’s targets.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.10.0; omitted or unsupported versions are refused. The cloud CLI is installed separately from this runtime pin.
Keep prompts, models, and tools in the authored package. Select models through model bindings, with any target overrides in 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 currently pushes SLNG targets only. 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
Omitting deployment_region uses the organization’s default placement. To choose explicitly, add it to the existing target and recompile:
targets.yaml — merge into the existing target
string
One Pipecat Cloud worker region. eu-central is an example, not a requirement. Unmute forwards the name without checking availability; choose from regions list. Omission uses platform placement. Multiple regions on one Pipecat target are refused.
The secret set must use the same region. For the example above:
Terminal — from my-agent/build/pipecat
Hosting region places the worker. Provider inference regions and SLNG 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 and the runbook’s required environment section 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. Other routes have their own requirements in the generated runbook. --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

Run pipecat cloud deploy inside my-agent/build/pipecat/. The command reads pcc-deploy.toml and builds the directory’s Dockerfile in Cloud. It uses agent_name to create the resource, or asks to update a matching resource. See the deploy reference. Unmute derives my-agent-pipecat from the package name and target name. That identity is regenerated in pcc-deploy.toml; the destination organization lives in your CLI configuration. Pipecat does not write a separate local agent-ID file for this workflow. 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
Create a key through 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
Use the agent commands to select a session or deployment in logs. Leave the log level unset to see errors as well as normal messages. Avoid sharing logs that contain caller data or secrets.

Every later deploy

Edit the authored prompts, tools, supported local handlers, or model settings. From the directory containing my-agent/:
Terminal
Check the regenerated .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, saved LiveKit manifests, and JSON tool samples. Any hand-edited generated Python or manifest settings are 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
The listing shows names and readiness, without values. Wait for 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

Merge this into the existing target and compile again:
targets.yaml
integer, 0 or more
default:"0"
Instances Pipecat Cloud holds ready. A positive value emits [scaling] min_agents in the manifest. Omitted or zero emits no minimum; the platform can scale to zero. A positive value adds a standing cost. Other targets refuse a positive value.
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. For cloud-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. For a temporary host setting, Pipecat’s deploy flags override the generated manifest. Keep repeatable overrides in your deployment script outside build/. 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.