Quick install
Run this on the machine where you want Breadbox to live — a VPS, a spare laptop, a NAS with Docker, anywheredocker can run. breadbox.sh/install.sh is a thin bootstrap shim that downloads the real installer from the canalesb93/breadbox GitHub repo; you can read the script before piping it to bash.
Detects your platform
Reads your OS (macOS / Linux) and architecture (
amd64 / arm64) so it can pick the right binary.Checks Docker
If Docker is missing on Linux, the installer offers to install it for you via the official
get.docker.com script. On macOS you’ll need Docker Desktop installed already.Prompts for a public domain (optional)
Enter a hostname if you have one ready (e.g.
breadbox.example.com) to enable HTTPS via . Leave blank for a localhost-only install — you can add a domain later.Generates secrets and Compose config
Creates your
ENCRYPTION_KEY and Postgres password, then writes a version-pinned docker-compose.prod.yml to the install directory. Both secrets land in .env — back up this file; see the ENCRYPTION_KEY notes below.Offers to run on boot
On Linux, registers a systemd unit; on macOS, a launchd agent. Either way, Breadbox starts automatically when your machine reboots.
breadbox.sh is unreachable, the direct URL works the same way:
Non-interactive install
Skip the prompts and configure a public domain in one shot:--yesaccepts all defaults — random generated credentials, auto-detected architecture, daemon registration — and skips interactive prompts. Use this in CI or when you want a hands-off install.--domain=<host>enables the — a reverse proxy on :80/:443 that requests HTTPS certificates automatically. Without--domain, Caddy is left off and ports 80/443 stay free on your host.
Install directory
| Invocation | Install location |
|---|---|
sudo bash ... (root) | /opt/breadbox |
| regular user | $HOME/.breadbox |
| override | INSTALL_DIR=/custom/path bash install.sh |
Updates
When a newer release ships, the dashboard surfaces a notice and you update with two commands from the install directory:.env are preserved and database migrations run on the next start. See Updating Breadbox for every install method, version pinning, verification, and rollback.
Back up your .env file
The installer writes your ENCRYPTION_KEY to .env and you don’t need to do anything with it day to day — Breadbox decrypts your bank credentials automatically on every run. But if you ever lose .env (host migration, accidental rm, container volume wipe), the encrypted bank credentials in your database become unrecoverable.
Are you planning to use cloud AI clients?
Need Claude, ChatGPT, or other cloud AI to reach Breadbox?
Cloud AI clients and real-time webhooks from Plaid/Teller need a public HTTPS URL, not
localhost. If you want any of that, follow the Remote Hosting guide — exe.dev, Cloudflare Tunnel, Caddy on a VPS, and Tailscale Funnel walkthroughs. Localhost-only is fine if you’re just evaluating, or if the only agent touching Breadbox is a local autonomous runner (e.g., Openclaw on the same machine).Alternative install methods
The one-liner above is the supported default. The methods below are for specific cases: integrating Breadbox into an existing Compose stack, running without Docker, or hacking on the source.- Docker Compose (manual)
- Binary
- Go install
Use this if you already manage a Compose stack and want to drop Breadbox into it yourself.
Pin a specific version in
docker-compose.yml:Environment variables
Most Breadbox configuration is done through environment variables. The one-liner and Docker Compose methods generate these for you automatically — you only need this table if you’re doing a manual or binary install. The table below covers the essentials; the environment variables reference documents every variable, precedence rules, and how env vars interact with dashboard settings.| Variable | Required | Description |
|---|---|---|
DATABASE_URL | Yes | PostgreSQL connection string, e.g. postgres://user:pass@host:5432/breadbox?sslmode=disable |
ENCRYPTION_KEY | Yes | 32-byte key as a 64-character hex string. Generate with openssl rand -hex 32. Required when any bank provider is configured. |
SERVER_PORT | No | HTTP listen port. Defaults to 8080. |
DOMAIN | No | Public hostname (e.g. breadbox.example.com). Enables the caddy compose profile for automatic HTTPS; leave unset for localhost-only installs. |
PLAID_CLIENT_ID | No | Plaid API client ID. Can also be set through the setup wizard. |
PLAID_SECRET | No | Plaid API secret. Can also be set through the setup wizard. |
TELLER_APP_ID | No | Teller application ID. Can also be set through the setup wizard. |
.env and configure them from the setup wizard later. See Bank Connections for the full comparison.
Verify the install
After the installer finishes, runbreadbox doctor to confirm everything is healthy — you should see all checks pass in green:
ENCRYPTION_KEY, Plaid/Teller configuration, bank-connection credential decryption, admin account, scheduler cron expressions, and (when you’ve set a public URL) DNS + /health/ready reachability. It exits non-zero on any failure, so you can gate CI or install scripts on it.
breadbox doctor is read-only and safe to run repeatedly. It does not boot the HTTP server and does not probe Plaid or Teller with your credentials — it only validates that your env vars, database, and locally-encrypted tokens are internally consistent. To verify a Plaid/Teller connection is actually talking to the provider, trigger a sync from the admin dashboard.--json emits structured output for CI scripts; --skip-external skips DNS and outbound HTTP checks for air-gapped installs.
After installing
Openhttp://your-host:8080 (or your HTTPS domain if you set one) in a browser. Breadbox redirects you to a one-time setup wizard that covers:
- Admin account — username and password for the dashboard.
- Bank provider — Plaid Client ID + Secret, or Teller App ID (whichever you picked above). You can skip this and fill it in later.
- Sync interval — how often Breadbox pulls new transactions (4 / 8 / 12 / 24 hours).
- Webhook URL (optional) — your public HTTPS host, if you have one, so Plaid and Teller can push real-time updates.
Onboarding walkthrough
Connect a bank, sync your first transactions, and attach an AI agent over MCP — about 10 minutes end to end.
MCP setup
Once Breadbox is running, wire up Claude, ChatGPT, Openclaw, or any MCP-compatible agent to query your data.