They always say "don't reinvent the wheel" — sometimes you have to.
Wheel is a per-project, per-user container that runs Claude Code / Codex agents as child processes, wired to each other and to tables, endpoints, scripts, MCP servers, vaults and chests on a visual board.
docs/ARCHITECTURE.md— the shared contract every team builds against. Read it first.docs/PROTOCOL.md— engine control plane +wheelCLI (SDK/Engine team)docs/API.md— api.wheel.dev (API team)docs/TESTPLAN.md— acceptance criteria (QA)redteam/— threat model and findings (ADVERSARY)
Workflow: one worktree per team under /Users/metatron/wheel-wt/<role>, merge to main after make check.
Wheel is open source. You can run it three ways.
wheeld # API + host + sandboxed agents in one process, sqlite store, http://localhost:8080 — nothing else to install
npx wheel-web # optional: the board UI against http://localhost:8080 (headless users skip this)
wheel --help # the agent-side CLI (also what your agents use inside their sandboxes)Sign up at the API (POST /v1/auth/signup) or in the web app; auth is local email/password by default.
export API_MASTER_KEY=$(openssl rand -base64 32) SESSION_SECRET=$(openssl rand -base64 32)
docker compose -f infra/docker-compose.yml up --build # postgres + api + host (docker sandbox backend) on :8080
cd web && pnpm install && NEXT_PUBLIC_AUTH_MODE=local NEXT_PUBLIC_API_URL=http://localhost:8080 pnpm dev # UI on :3000- Railway: fork this repo, create services from
docker/Dockerfile.apianddocker/Dockerfile.host(+ Postgres), applyinfra/railway/settings.jsonwithinfra/railway/apply-settings.sh; env vars are listed ininfra/railway/README.mdandweb/DEPLOY.md. The host runs agents as per-project unix users on one machine (no Docker daemon needed) — size it for your agents' builds. - Any VM / Kubernetes: run the two images with Postgres; the host needs a persistent volume at
/dataand must NOT be publicly reachable (the API talks to it over a private network withWHEEL_HOST_SECRET). The web app is a standard Next.js app (Vercel, ornext start).
Agents are Claude Code / Codex processes. Give them credentials through a vault node (one vault per account; wire the agent to it) or the
agent's Authenticate panel (in-browser Anthropic login, claude setup-token, or an API key). Nothing in Wheel ever shows a stored secret back.
See docs/ARCHITECTURE.md for the model and docs/WHEEL-ON-WHEEL.md for a board that develops Wheel itself.