Self-host overview
A Brittle deployment is the Hub container, Postgres, and an artifact store (local volume in dev; S3/R2 in prod).
What’s required vs optional
Section titled “What’s required vs optional”| Component | Required? | Notes |
|---|---|---|
| Hub container | Yes | ghcr.io/brittlehq/brittle:latest. The only image you need to pull. |
| Postgres | Yes | Version 14+. Single instance is fine; bring your own or use the compose-supplied one. |
| Local volume | Default | For artifact bytes. Survives docker compose down; dropped on down -v. |
| S3 / R2 bucket | Optional | Swap-in for the local volume when you need shared storage across replicas or a CDN-fronted artifact path. |
| Caddy / reverse proxy | Optional | For TLS termination and a clean public domain. The example stack ships one. |
What you don’t need
Section titled “What you don’t need”A few things you might assume are in the stack but aren’t:
- Redis. Not used today.
- A separate worker process. Everything runs inside the Hub container.
- An external auth provider. Local email/password is built in. SSO / OAuth are on the roadmap.
Two deployment shapes
Section titled “Two deployment shapes”In rough order of effort:
- Installation. One line:
curl -fsSL https://brittle.dev/install.sh | sh. Or the manual Docker Compose walkthrough if you want to see every moving piece. - Production notes. TLS, real domain, S3 artifacts, backups, upgrades.
Next steps
Section titled “Next steps”- Installation brings the stack up on your laptop.
- Hub configuration lists every config field and env var the Hub accepts.
- Production notes covers TLS, S3, backups, and upgrades.