Deploying with Docker
The repository’s Dockerfile bundles the coordinator and editor into one image; either process dying kills the container so a restart policy can recover it.
docker build -t flowbun:demo .# or: podman build -t flowbun:demo .Run it with data/ bind-mounted — wiring and blocks stay editable and persist across container restarts; nothing under data/ is baked into the image:
docker run -d --name flowbun-demo \ -p 4200:4200 -p 8787:8787 \ -v "$(pwd)/data:/app/data" \ --env-file .env \ flowbun:demoThen open http://<host>:4200 — including from another machine on the LAN; the editor derives the coordinator’s websocket address from whatever host the browser used to reach the page.
The repo’s docker-compose.yml wires up the same ports, bind-mount, and .env:
docker compose up -d --buildSafety defaults
Section titled “Safety defaults”FLOWBUN_DRY_RUN=trueis the image’s baked-in default — a container started with no other configuration can never make a real Home Assistant write.- No login is required by default, matching the single-household-LAN case. If the container is reachable beyond your own LAN, set
FLOWBUN_AUTH_USERNAME/FLOWBUN_AUTH_PASSWORDin.envto turn on the built-in JWT session auth before exposing it further.
Enabling the Claude agent (optional)
Section titled “Enabling the Claude agent (optional)”The chat panel needs a one-time interactive login:
./scripts/setup-claude-auth.shFollow the printed URL, then copy the resulting token into .env as CLAUDE_CODE_OAUTH_TOKEN and docker compose up -d to restart. Without it, the chat panel responds with a clear “not authenticated yet” message rather than hanging.
