Used for

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.

Without it
  • 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 sarah
GIFNeeded

Forking 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.

One template, every engineer

production-stack

Template
postgres 16redis 7node 22docker 27nginxseeded db
sarah
from production-stack
mark
from production-stack
jensen
from production-stack
alice
from production-stack
tom
from production-stack

Every 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.

ScreenshotNeeded

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 codex
GIFNeeded

Forking 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-passkeys
Also a preview environment

Every 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 3000
ScreenshotNeeded

A 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-auth
ScreenshotNeeded

Console → 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 300

What 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

Claude CodeDockerPython 3GoNode.jsheadless Chromeffmpeggit
<200ms
to fork a whole machine, services and all
<10ms
to boot a new one from cold
€0
for a machine while it is asleep

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.

Set it up yourself
Sign in and the first machine is yours.
Start now
Talk it through
Tell us the workload and we'll size it with you.
Talk to us