Skip to main content
Version: 2026.8.1

Single box

The default deployment. One machine runs the whole stack: the Postgres database, the api, the web frontend, and the bundled Caddy proxy that terminates HTTPS. This is what Install walks through, and what the setup builder generates without any extra changes.

What runs​

The docker-compose.yml defines five services, all pulled as prebuilt images from the registry:

  • db: Postgres, with its data under ./data/db.
  • api: the backend.
  • web: the frontend, bound to loopback and fronted by Caddy.
  • backup: a nightly pg_dumpall into ./data/backups, with rotation.
  • caddy: HTTPS, active when COMPOSE_PROFILES=caddy (the builder sets this for every mode except plain HTTP and host-run Tailscale).

Only Caddy publishes ports on the LAN (80 and 443). Everything else talks over the internal compose network. All state lives in bind-mounted folders under ./data/.

Sizing​

  • A used mini PC or a small-form-factor desktop with 8 to 16GB of RAM and an SSD has plenty of headroom for an instance with several active workspaces.
  • At runtime the stack is a Node process, Postgres, and a proxy. The built-in AI features call out to whatever provider you connect rather than computing on the box.
  • The full sizing notes are in Self-hosting.

Day two​

  • Back up by copying the ./data/ tree.
  • Update with docker compose pull && docker compose up -d, or turn on the updater and never think about it.
  • The details, including the common failure modes, are in Operating.

If your box already has a reverse proxy or a Postgres you would rather reuse, see behind a reverse proxy and external database.