Developer install (from source)

Setting up beebox from a fresh clone, for hacking on the codebase itself. This is the from-source path — no personal infrastructure, no prior box. To run beebox without hacking on it (locally or on a server), the Docker path is simpler: see docker-install.md.

Prerequisites

Platforms

Quickstart

git clone <repo-url> && cd <repo>
pnpm install
pnpm run doctor
pnpm --dir beebox build:frontend
cd beebox
pnpm bbx init ~/boxes/dev1
(cd ~/boxes/dev1 && pnpm install)      # boxes are packages
pnpm bbx serve ~/boxes/dev1
pnpm run doctor

Then open the URL bbx serve prints (default http://localhost:3210/).

Notes:

Working on the frontend

bbx serve --dev only watches the backend — it does not run Vite, so frontend edits won't hot-reload under plain bbx serve --dev. For a full edit-and-see loop, run two terminals:

# terminal 1 — backend, watch mode
cd beebox
pnpm bbx serve --dev --port 3211 ~/boxes/dev1

# terminal 2 — frontend, Vite + HMR, proxies /api and /auth to the backend
cd beebox/src/frontend
FRONTEND_PORT=3210 BACKEND_PORT=3211 pnpm dev

Open http://localhost:3210/. If you're also running this monorepo's personal dev router (port 3210/3211), pick different ports for one of the two to avoid a collision.

First-run account (auth is on, even in dev)

A dev box is authenticated — the first time you open it you'll hit a login wall. Create your account once with bbx auth create-user (or open the First-run setup: …/auth/setup?token=… URL the server prints to its console on first boot). The credential store is home-level (~/.beebox-auth.json), so one account works across every worktree's dev server — you set it up once.

After the owner account exists, its Admin page can issue 15-minute, single-use member invites; local users can change their own password from Settings. The Allowed Users list can also issue a 15-minute reset link for an existing member who forgot their password; the member chooses the replacement password and is then returned to ordinary login.

Authentication is always on: there is no operator opt-out to run a box unauthenticated. (An in-process openAccess construction option exists purely as a test seam — no CLI flag, env var, or config field turns it on.)

Troubleshooting

Anything misbehaves — installs, missing binaries, auth, a stale frontend build — run:

pnpm run doctor

It checks Node/pnpm versions, the workspace install, the external binaries above, git-lfs filter registration, Claude Code auth, and whether the frontend has been built, with a one-line remedy for each failing check.