Skip to content

Docker

Docker Compose is the recommended way to run Clawbolt. It handles the app and tunnel setup.

Terminal window
# Clone and configure
git clone https://github.com/mozilla-ai/clawbolt.git
cd clawbolt
cp .env.example .env
# Edit .env with your credentials
# Start everything
docker compose up --build
ServiceDescription
appFastAPI server on port 8000
dbPostgreSQL database for all structured data
tunnelCloudflare Tunnel for HTTPS webhook registration

On startup, the app:

  1. Runs database migrations automatically
  2. Starts the FastAPI server
  3. Auto-registers webhooks via the Cloudflare Tunnel URL (Telegram and, if Linq is the configured iMessage backend, Linq)

Structured data (users, messages, memory, etc.) is stored in PostgreSQL. The Docker Compose file includes a PostgreSQL service with a named volume for persistence.

File uploads and media are stored under the data/ directory. By default, Docker Compose bind-mounts ./data from your host into the container at /app/data.

Terminal window
curl http://localhost:8000/api/health
# {"status":"ok"}

Try rebuilding without cache:

Terminal window
# Rebuild without cache
docker compose build --no-cache
Terminal window
# Stop existing containers
docker compose down
# Or use a different port
docker compose up --build -e APP_PORT=8080
Terminal window
# Remove all user data
rm -rf data/users/
docker compose up --build