Skip to main content
Calseta is designed for self-hosting. A single 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

Three services 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 included docker-compose.yml runs PostgreSQL 15 with a named volume for persistence. No additional setup needed.

Bring Your Own PostgreSQL

Point DATABASE_URL to your existing PostgreSQL 15+ instance:
Requirements:
  • PostgreSQL 15 or later
  • pgcrypto extension 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:
Save the returned key immediately — it cannot be retrieved after creation.

Production Deployment

Security Checklist

  • Set a strong ENCRYPTION_KEY
  • Use LOG_FORMAT=json for structured logging
  • Set HTTPS_ENABLED=true if behind a TLS-terminating proxy
  • Configure TRUSTED_PROXY_COUNT to match your proxy depth
  • Set CORS_ALLOWED_ORIGINS to 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:
Uses Managed Identity or DefaultAzureCredential. Install with pip install calseta[azure]. AWS Secrets Manager:
Uses the standard AWS credential chain. Install with 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:
Tagged versions follow 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. Set TRUSTED_PROXY_COUNT so rate limiting reads the correct client IP from X-Forwarded-For.