Skip to main content
A boxd machine is a real computer you can develop on every day. One command gives you a full Ubuntu 24.04 machine with a persistent 100 GB disk, 2 vCPU, 8 GiB of RAM, and a public HTTPS URL. That is the default size. There are four sizes, from 1 vCPU / 4 GiB to 8 vCPU / 32 GiB. See Resources and limits. You work in it from wherever you already work: the web terminal in the console, your own terminal (Ghostty, iTerm, anything), or your favorite IDE like Cursor or VS Code. Leave it running: an idle machine hibernates on its own and bills for disk only while it is hibernated.

A fresh machine boots in milliseconds with boxd new.

Create one and get in

You get a shell on the machine straight away. Type exit or Ctrl-D to come back to your local shell.

Work in your editor

The SSH alias is real SSH config, so any Remote-SSH editor sees your machines in its picker. In VS Code, Cursor, or Antigravity, run Remote-SSH: Connect to Host and pick myapp.boxd. JetBrains Gateway and Zed work the same way. From the console you can also hit Open in Editor on any machine and land straight in it.

Open in Editor drops you into the machine over SSH.

Everything is already installed

Each machine ships developer-ready:
  • Languages. Python 3 with uv and pipx, Go, build-essential, and Node.js 24 via nvm.
  • Agents. Claude Code, Codex, and OpenCode, already configured for the environment. See Coding agents.
  • Containers. Docker, Compose, and Buildx with the daemon running. See Run Docker.
  • Tools. git, gh, jq, ripgrep, sqlite3, rsync, ffmpeg, ImageMagick, and agent-browser (a stealth Chromium).
  • Editors. vim and neovim on the machine, plus full SSH for everything remote.
You land as the boxd user with passwordless sudo, so anything you would install on a laptop installs here too.

Your app is live while you build it

There is no separate deployment target. Every machine serves https://myapp.boxd.sh the moment something listens on a common web port: the proxy detects 80, 443, 8080, 8000, 3000, 5000 and 5173, and falls back to 8000. TLS, HTTP to HTTPS redirects, and WebSockets are handled for you. Start your dev server and paste the URL into a DM. If your app uses another port, point the proxy at it:
Add subdomain proxies for extra services on the same machine, like api.myapp.boxd.sh. See Proxies.

Your laptop and boxd machines

With the client utilities enabled on your laptop, a boxd machine can reach back to your laptop. You can paste screenshots from your laptop’s clipboard straight into Claude Code running over SSH, read local files with boxd local read inside the machine, and drive a real Chrome on your laptop from inside the machine. See Launch a browser.

Persistence by default

The disk persists across reboots, standby, and hibernation, so your checkouts, dependencies, and dotfiles stay put. On top of that:
  • Snapshots. Save a configured workspace as a named snapshot. Create a fresh machine from it whenever you, a teammate, or an agent needs one.
  • Checkpoints. Save one before a risky change and restore the same machine if it goes wrong.
  • Env vars and secrets. Set each one once with a scope, and it is injected into the machines in that scope, so there are no .env files to copy around.
  • Integrations. Connect GitHub, Linear, Slack, or any of over a hundred integrations once, and every private machine and automation of yours can act as them.

Work together

Open a machine to your whole organization with one command:
Every org member can now connect to the same machine. Sharing removes your agent logins from the machine first, so a teammate can never read your tokens. To do private, authenticated work on a copy of a shared machine, fork it. The fork is private to you by default. See Machine sharing.

What it costs when you step away

A machine with no network traffic in either direction hibernates after 4 hours by default. Its state is written to disk, and a hibernated machine bills for disk only. The next SSH connection or HTTP request wakes it in about 85ms, exactly where you left it.
The idle timers watch network traffic in either direction, not CPU. A long build or training run that sends and receives nothing looks idle and gets hibernated mid-job. Disable the timer on machines that work quietly: boxd machine config set myapp auto-hibernate.timeout 0. See Suspend, resume, and hibernate.