Skip to main content
Breadbox ships as a single Go binary that bundles the REST API, MCP server, admin dashboard, webhooks, and sync scheduler. You can run it with Docker Compose (recommended), download a pre-built binary, build from source with Go, or deploy it to a server with automatic HTTPS in one command. All installation methods end at the same first-run setup wizard. Docker Compose is the fastest way to run Breadbox. It starts both Breadbox and PostgreSQL for you — no separate database setup required.
1

Download the Compose file

Create a directory for Breadbox and download the production Compose file:
mkdir breadbox && cd breadbox
curl -O https://raw.githubusercontent.com/canalesb93/breadbox/main/deploy/docker-compose.prod.yml
mv docker-compose.prod.yml docker-compose.yml
2

Create your .env file

Generate a .env file with the required configuration. The commands below generate a random encryption key and database password for you:
cat > .env <<EOF
DATABASE_URL=postgres://breadbox:breadbox@db:5432/breadbox?sslmode=disable
ENCRYPTION_KEY=$(openssl rand -hex 32)
SERVER_PORT=8080
ENVIRONMENT=docker
POSTGRES_USER=breadbox
POSTGRES_PASSWORD=$(openssl rand -base64 32 | tr -d '=/+')
POSTGRES_DB=breadbox
EOF
Save your .env file somewhere safe. The ENCRYPTION_KEY encrypts all stored bank credentials. If you lose it after connecting a bank, you cannot recover those credentials.
3

Start Breadbox

Start Breadbox and PostgreSQL:
docker compose up -d breadbox db
This starts both services and runs any pending database migrations automatically. Open http://localhost:8080 to access the setup wizard.
This command starts Breadbox and PostgreSQL without the Caddy reverse proxy, exposing port 8080 directly. For production with automatic HTTPS, see Production deployment below.
To pin a specific version instead of latest, edit docker-compose.yml and change the image tag:
image: ghcr.io/canalesb93/breadbox:v0.1.0

Binary download

Pre-built binaries for Linux and macOS (amd64/arm64) are available on the GitHub Releases page. You’ll need a running PostgreSQL 16+ instance before starting.
# Download the binary for your platform (example: Linux amd64)
curl -fsSL https://github.com/canalesb93/breadbox/releases/latest/download/breadbox-linux-amd64 -o breadbox
chmod +x breadbox

# Set required environment variables
export DATABASE_URL="postgres://user:pass@localhost:5432/breadbox?sslmode=disable"
export ENCRYPTION_KEY="$(openssl rand -hex 32)"

./breadbox serve
# Visit http://localhost:8080

Go install

Build from source using Go 1.24 or later. You’ll need a running PostgreSQL 16+ instance.
git clone https://github.com/canalesb93/breadbox.git && cd breadbox
go install ./cmd/breadbox

# Set required environment variables
export DATABASE_URL="postgres://user:pass@localhost:5432/breadbox?sslmode=disable"
export ENCRYPTION_KEY="$(openssl rand -hex 32)"

breadbox serve
# Visit http://localhost:8080
The module path is breadbox, so go install github.com/...@latest is not supported. Clone the repo and install locally as shown above.

Production deployment

For a production server with automatic HTTPS via Caddy, use the one-liner install script. It installs Docker if needed, downloads the deployment files, generates secrets, and starts Breadbox with Caddy for automatic TLS:
curl -fsSL https://raw.githubusercontent.com/canalesb93/breadbox/main/deploy/install.sh | sudo bash
After the script completes, configure your domain in the Caddyfile and start all services including the Caddy reverse proxy:
docker compose up -d

Environment variables

All Breadbox configuration is done through environment variables. Set these in your .env file or export them directly before running the binary.
VariableRequiredDescription
DATABASE_URLYesFull PostgreSQL connection string, e.g. postgres://user:pass@host:5432/breadbox?sslmode=disable
ENCRYPTION_KEYYes32-byte key as a 64-character hex string. Generate with openssl rand -hex 32. Required when any bank provider is configured.
SERVER_PORTNoHTTP listen port. Defaults to 8080.
PLAID_CLIENT_IDNoPlaid API client ID. Can also be set through the setup wizard.
PLAID_SECRETNoPlaid API secret. Can also be set through the setup wizard.
TELLER_APP_IDNoTeller application ID. Can also be set through the setup wizard.
You can leave PLAID_CLIENT_ID, PLAID_SECRET, and TELLER_APP_ID out of your .env file and configure them later through the admin setup wizard at http://localhost:8080.

After installing

Once Breadbox is running, open http://localhost:8080 to complete the setup wizard. The wizard walks you through creating your admin account and configuring your bank provider credentials before you connect any banks.

Get started

Follow the quickstart guide to connect a bank and query your first transaction.