Everyone gets a machine with the app already running.
No setup, no README to follow, no afternoon lost to a broken Postgres install. A new engineer, a designer, or an agent opens a machine and the whole stack is up.
- Onboarding costs a day before anyone writes a line
- Everyone's laptop is subtly different from everyone else's
- The staging queue is one deep and always busy
Set it up once. Nobody sets it up again.
Build the machine your app actually needs — the services, the database, the seed data, the version of Node that only works on Tuesdays — and then hand out copies. Every copy is a real machine with its own kernel, and it comes up running.
That changes who can contribute. Setup time is the reason a designer or a PM never runs the app locally. Take it to zero and they open a machine like they open a document.
boxd machine fork production-stack sarahboxd machine connect sarahForking a machine, recorded end to end: run `boxd machine fork production-stack sarah`, let the real elapsed time show, then `boxd machine connect sarah` and run something that proves the stack is already up (psql, or curl against the local app).
Already running
The machine arrives with your services up and your database seeded. Nobody installs anything on their first day.
Every tool in it
GitHub, Linear and Slack connect once for the org and are present in every machine it spawns — for people and for agents.
Free while it sleeps
Idle machines suspend themselves and cost nothing. They come back with every process exactly where it was.
production-stack
TemplateEvery tool your team uses, already in it.
Connect a service once for the org and it is present in every machine that org spawns. No tokens pasted into shells, no per-machine setup, and nothing to redo when a machine is forked or replaced. The coding agents get the same connections over MCP.
GitHub
Clone, push and open pull requests from inside the machine without pasting a token into it.
Linear
Issues reachable from the machine, and installed into Claude Code, Codex and opencode as an MCP server.
Slack
Post from a running job, or let an agent report back to the channel that asked for the work.
Console → Integrations, with GitHub, Linear and Slack all showing connected for a real org. Crop to the list; no browser chrome.
Connect it once
boxd manage integrations connect githubboxd manage integrations mcp linear claude codexForking mid-feature: a machine with the app running and uncommitted edits, then `boxd machine fork feature-auth try-passkeys`, then `boxd machine list` showing both running. The point to capture is that the original is untouched.
Three hours in, try it the other way.
Fork the machine, not the branch. The copy brings the running processes, the database as it is right now, and the work you have not committed. Try the other approach in it, keep the one that worked, and throw the other machine away.
Nothing is stashed, nothing is rebuilt, and the machine you started from is untouched the whole time.
boxd machine fork feature-auth try-passkeysEvery machine has a URL.
Publish a port and the machine is on the internet over HTTPS, with the certificate and DNS handled. There is no build step, no deploy, and no staging queue to wait behind — the thing running on your machine is the thing they see.
Send it to a designer, a PM, or a customer who wants to look at the feature before you finish it. Every branch can have one, because every branch can have a machine.
boxd machine proxy add feature-auth --vm feature-auth --port 3000A real app served from a machine, shot in a browser with the address bar visible so the *.boxd.sh URL and the padlock both read. Any app of ours will do — the URL is the subject, not the app.
Or let them come inside.
A URL is for looking. Sharing the machine is for working: share it with your org and any teammate can open a shell in the same box, see the same processes, and debug the thing with you rather than from a screenshot.
boxd machine share feature-authConsole → Machines with a mix of running and suspended rows, and whatever column shows cost or state reading zero for the suspended ones. The contrast between the two states is the whole point.
It sleeps when nobody is using it.
A machine that has gone quiet suspends itself and costs nothing while it is down. It comes back with the processes still running, the database still warm, and the editor still open on the file you left — not rebooted, resumed.
Which is what makes a machine per person per branch affordable in the first place. Most of them are asleep most of the time.
boxd machine new checkout --auto-suspend-timeout 300What is on the machine.
The operating system
Ubuntu 24.04 (full, unminimized, with man pages and systemd). A whole distribution, not a stripped image that breaks the first time you reach for a normal Linux tool.
The hardware
2 vCPU, 8 GiB of RAM and 100 GB of disk by default, on its own kernel under KVM. Sized per org, so a team that needs more gets more.
How you reach it
Over SSH, which means your own editor rather than a browser IDE. The CLI keeps your SSH config up to date, so VS Code, Cursor, JetBrains, git and scp all find the machine without being told about it.
Already installed
Nobody should lose a day to a broken Postgres install.
Set the machine up once, fork it for everyone else, and let the ones nobody is using go to sleep.