Parallel coding agents
Give each Claude Code or Codex session its own worktree and its own machine. They no longer share one port 3000 or one CPU.
Keep your editor, coding agent and git on your laptop. Each worktree gets a Linux machine for its builds, tests and dev server, so parallel agents stop competing for one laptop’s ports, CPU and memory.
bead worktree upNeeds the bead CLI: install it from the home page.
Give each Claude Code or Codex session its own worktree and its own machine. They no longer share one port 3000 or one CPU.
The command runs on the worktree’s machine. Output and the exit code come back to your terminal.
bead worktree exec -- cargo testThe service runs on the machine and its port is forwarded to 127.0.0.1, WebSockets included.
bead worktree dev webSend a private link to one running service. It expires after 24 hours unless you set another time, up to seven days.
bead worktree share webDescribe the machine in a bead.toml at the repo root and commit it. Every worktree, teammate and agent uses the same file.
bead worktree upCreates or wakes this worktree’s machine and copies your source to it.
bead worktree prepareRuns your own setup script when dependencies change.
bead worktree exec -- cargo checkCopies what changed, runs the command, returns its output and exit code.
bead worktree dev webStarts the service and forwards its port to your laptop.
bead worktree downDeletes the machine when the branch is finished.
version = 1
[template]
id = "devbox"
[machine]
size = "medium"
idle_timeout = 900
[prepare]
run = ".bead/prepare"
inputs = ["Cargo.lock", ".bead/**"]
[service.web]
run = "npm run dev"
port = 3000
Tracked files and untracked files that git doesn’t ignore are copied from laptop to machine. Deletes are copied too. Build output and caches on the machine are left alone.
The machine gets your files and an empty git repository, so old commits never leave your laptop. Scripts can read the current commit and branch from BEAD_GIT_COMMIT and BEAD_GIT_BRANCH.
Values from your gitignored .env files are passed to the command as environment variables. They are not written to a file on the machine.