A GitHub Action that builds and deploys your Pipecat agent to Pipecat Cloud. Use it in your CI/CD workflows to automate deployments whenever you push code.
- Cloud builds — build Docker images directly in Pipecat Cloud infrastructure (no Docker or registry needed)
- Smart caching — identical build contexts are detected and reused automatically
- Readiness polling — waits for the deployment to become available before marking the step as successful
- Full control — configure scaling, regions, secrets, and more via action inputs
Point the action at your repo (with a Dockerfile) and it handles everything:
name: Deploy to Pipecat Cloud
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build and Deploy to Pipecat Cloud
uses: daily-co/pipecat-cloud-deploy-action@v2
with:
api-key: ${{ secrets.PIPECAT_API_KEY }}
agent-name: my-agent
cloud-build: true
secret-set: my-secretsIf you build your image separately (or use another CI step), pass the fully-tagged image:
- name: Deploy to Pipecat Cloud
uses: daily-co/pipecat-cloud-deploy-action@v2
with:
api-key: ${{ secrets.PIPECAT_API_KEY }}
agent-name: my-agent
image: ghcr.io/my-org/my-bot:v1.2.3
image-credentials: my-registry-secret
secret-set: my-secrets
region: us-east-1If you already have a build ID from a previous run or the pcc CLI:
- name: Deploy to Pipecat Cloud
uses: daily-co/pipecat-cloud-deploy-action@v2
with:
api-key: ${{ secrets.PIPECAT_API_KEY }}
agent-name: my-agent
build-id: build_abc123
secret-set: my-secrets| Input | Description |
|---|---|
api-key |
Pipecat Cloud Private API key. Store as a GitHub secret. Must be a Private key, not a Public key. |
agent-name |
Name of the agent to deploy. |
| Input | Default | Description |
|---|---|---|
cloud-build |
false |
Enable Pipecat Cloud Build (builds the image in the cloud). |
build-context |
. |
Build context directory path. |
dockerfile |
Dockerfile |
Path to the Dockerfile (relative to build context). |
build-id |
Reuse an existing cloud build ID (skips the build step). | |
build-timeout |
600 |
Max seconds to wait for cloud build completion. |
No Docker or registry required: Cloud builds run entirely in Pipecat Cloud infrastructure. You don't need Docker installed on the runner, registry credentials, or
packages: writepermissions.
| Input | Description |
|---|---|
image |
Pre-built Docker image with tag (e.g. ghcr.io/my-org/my-bot:v1.2.3). |
image-credentials |
Name of the image pull secret set in Pipecat Cloud (for private registries). |
| Input | Default | Description |
|---|---|---|
secret-set |
Name of the secret set for runtime secrets. | |
region |
Deployment region. Uses the organization default if omitted. | |
min-agents |
0 |
Minimum agents to keep warm (0-50). |
max-agents |
10 |
Maximum concurrent agents (1-50). |
agent-profile |
Agent profile name. | |
enable-managed-keys |
false |
Enable managed keys. |
wait-for-ready |
true |
Poll until the deployment is ready. |
wait-timeout |
90 |
Max seconds to wait for deployment readiness. |
api-url |
https://api.pipecat.daily.co |
Override the Pipecat Cloud API base URL. |
| Output | Description |
|---|---|
build-id |
The Pipecat Cloud Build ID (when using cloud build). |
service-name |
The deployed service/agent name. |
- name: Deploy to Pipecat Cloud
uses: daily-co/pipecat-cloud-deploy-action@v2
with:
api-key: ${{ secrets.PIPECAT_API_KEY }}
agent-name: my-agent
organization: ${{ vars.PIPECAT_ORG_ID }}
cloud-build: true
dockerfile: docker/Dockerfile.prod
build-context: .
secret-set: prod-secrets
region: us-east-1
min-agents: 1
max-agents: 5- name: Deploy to Pipecat Cloud
uses: daily-co/pipecat-cloud-deploy-action@v2
with:
api-key: ${{ secrets.PIPECAT_API_KEY }}
agent-name: my-agent
organization: ${{ vars.PIPECAT_ORG_ID }}
cloud-build: true
wait-for-ready: false- name: Deploy
id: deploy
uses: daily-co/pipecat-cloud-deploy-action@v2
with:
api-key: ${{ secrets.PIPECAT_API_KEY }}
agent-name: my-agent
organization: ${{ vars.PIPECAT_ORG_ID }}
cloud-build: true
- name: Print deploy info
run: |
echo "Build ID: ${{ steps.deploy.outputs.build-id }}"
echo "Service name: ${{ steps.deploy.outputs.service-name }}"- Create a Pipecat Cloud Private API key in the Pipecat Cloud dashboard. Make sure to select Private (not Public) when creating the key.
- Add the API key as a GitHub secret named
PIPECAT_API_KEY(or any name you prefer) in your repository settings under Settings > Secrets and variables > Actions. - Add the action to your workflow file (see examples above).
BSD 2-Clause License. See LICENSE for details.