Source code for the official Pipecat Cloud base agent image (dailyco/pipecat-base).
This image provides the foundational runtime environment for running agents on Pipecat Cloud. It includes:
- An HTTP API server based on FastAPI for receiving agent start requests
- Integration with the platform's session management
- Automatic handling of room URLs and tokens
- Logging infrastructure optimized for cloud environments
We provide base images for multiple Python versions. See versions.yaml for the current list of supported versions.
Supported Python versions: 3.10, 3.11, 3.12 (default/recommended), 3.13
Image naming patterns:
dailyco/pipecat-base:latest- Latest version with Python 3.12 (recommended)dailyco/pipecat-base:latest-py3.X- Latest version with specific Python versiondailyco/pipecat-base:VERSION- Pinned version with Python 3.12 (recommended for production)dailyco/pipecat-base:VERSION-py3.X- Pinned version with specific Python version
When creating your own agent, use this base image in your Dockerfile:
# Using default Python version
FROM dailyco/pipecat-base:latest
COPY ./requirements.txt requirements.txt
RUN pip install --no-cache-dir --upgrade -r requirements.txt
COPY ./bot.py bot.py
# Or specify a specific Python version
FROM dailyco/pipecat-base:latest-py3.12
COPY ./requirements.txt requirements.txt
RUN pip install --no-cache-dir --upgrade -r requirements.txt
COPY ./bot.py bot.pyFor production use, we recommend pinning to specific versions:
# Recommended: Pin to specific version (uses Python 3.12)
FROM dailyco/pipecat-base:VERSION
# Or specify both version and Python version explicitly
FROM dailyco/pipecat-base:VERSION-py3.12When using this base image, your project must:
-
Include a
bot.pyfile with an asyncbot()function that follows this signature:async def bot(args: DailySessionArguments): """Main bot entry point""" # Access: args.room_url, args.token, args.session_id, args.body # Your agent implementation here
-
For WebSocket-based agents (like Twilio), implement an alternate signature:
async def bot(args: WebSocketSessionArguments): """WebSocket bot entry point""" # Access: args.websocket, args.session_id # Your WebSocket agent implementation here
- The base image exposes an HTTP API on port 8080 with:
/botendpoint for HTTP-based agents (Daily.co integration)/wsendpoint for WebSocket-based agents (Twilio, custom WebSocket)
- When Pipecat Cloud receives a request to start your agent, it calls the appropriate endpoint
- The base image invokes your
bot()function, passing room details and config - Your agent code runs in its own process, managed by the platform
To release a new version of the base image:
-
Bump the version (from the
pipecat-basedirectory):cd pipecat-base uv version --bump patch --no-sync # For bug fixes (0.1.1 → 0.1.2) uv version --bump minor --no-sync # For new features (0.1.1 → 0.2.0) uv version --bump major --no-sync # For breaking changes (0.1.1 → 1.0.0)
-
Update the lock file:
uv lock
-
Update the changelog: Move
[Unreleased]section to[X.Y.Z] - YYYY-MM-DDinCHANGELOG.md -
Create release PR:
git checkout -b release/vX.Y.Z git add pyproject.toml uv.lock CHANGELOG.md git commit -m "Release vX.Y.Z" git push origin release/vX.Y.ZThen open a PR from
release/vX.Y.Ztomain. After approval and merge, GitHub Actions will automatically build and publish the new version.
For detailed documentation on agent development: