docker compose up starts everything you need.
Prerequisites
- Docker and Docker Compose v2
- At least 2 GB RAM
- PostgreSQL 15+ (included in Docker Compose, or bring your own)
Quick Start
A worker process runs inside the API container, processing enrichment, webhook dispatch, and workflow execution from the task queue.
Environment Configuration
All configuration is via environment variables. Copy.env.local.example for development or .env.prod.example for production.
Required Variables
Enrichment Provider Keys
Enrichment providers without configured keys are automatically disabled — they won’t block other providers or cause errors.
Optional Configuration
Database Setup
Using Docker Compose (default)
The includeddocker-compose.yml runs PostgreSQL 15 with a named volume for persistence. No additional setup needed.
Bring Your Own PostgreSQL
PointDATABASE_URL to your existing PostgreSQL 15+ instance:
- PostgreSQL 15 or later
pgcryptoextension enabled (CREATE EXTENSION IF NOT EXISTS pgcrypto)- A dedicated database for Calseta
Running Migrations
Migrations run automatically on startup. To run them manually:Creating Your First API Key
After starting Calseta, create an admin API key:Production Deployment
Security Checklist
- Set a strong
ENCRYPTION_KEY - Use
LOG_FORMAT=jsonfor structured logging - Set
HTTPS_ENABLED=trueif behind a TLS-terminating proxy - Configure
TRUSTED_PROXY_COUNTto match your proxy depth - Set
CORS_ALLOWED_ORIGINSto your frontend domain (if applicable) - Use a managed PostgreSQL service (RDS, Cloud SQL, Azure Database)
Secrets Management
By default, secrets come from environment variables or.env file. For cloud deployments, two optional backends are supported:
Azure Key Vault:
DefaultAzureCredential. Install with pip install calseta[azure].
AWS Secrets Manager:
pip install calseta[aws].
Only one cloud secrets backend is active at a time. If neither is configured, the Azure and AWS SDKs are never imported — no startup penalty.
Infrastructure as Code
Terraform modules for deploying Calseta on AWS (ECS + RDS) and Azure (Container Apps + Azure Database for PostgreSQL) are coming soon. Follow the GitHub repo for updates.
Docker Images
Pre-built images are available from GitHub Container Registry:v{major}.{minor}.{patch}.
Health Checks
- API:
GET http://localhost:8000/health - MCP:
GET http://localhost:8001/health
Reverse Proxy
Place Calseta behind nginx, Caddy, or a cloud load balancer for TLS termination. SetTRUSTED_PROXY_COUNT so rate limiting reads the correct client IP from X-Forwarded-For.

