- 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.
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
ready, then deploy:
Terminal — from my-agent/build/pipecat
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’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.10.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 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
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.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 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
Runpipecat 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
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, 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
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.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. For a temporary host setting, Pipecat’s deploy flags override the generated manifest. Keep repeatable overrides in your deployment script outsidebuild/.
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.