Skip to main content
A machine is a KVM microVM with its own kernel, network stack, persistent disk, and public HTTPS domain. It’s reachable on the internet through the proxy: HTTPS by domain, SSH on a dedicated per-VM port.

Create

If you omit the name, boxd generates a random name like blue-river. Output:
With --json:

List

Returns no VMs if you have none.

Destroy

The name (and its proxy + SSH port) are reserved — recreating a machine with the same name reuses them when possible.

What’s inside

The default image is Ubuntu 24.04 (unminimized, with man pages and full documentation): Languages and runtimes:
  • Python 3 with pip, uv package manager, and pipx
  • Go (golang-go)
  • build-essential (gcc, g++, make)
Coding agents:
  • Claude Code (claude) — Anthropic’s CLI coding agent
  • Codex (codex) — OpenAI’s CLI coding agent
Use them with a subscription (e.g., Claude Max) or by setting an API key inside your machine. Each machine includes an AGENTS.md at ~/.config/boxd/AGENTS.md that gives agents context about the boxd environment. It’s symlinked to ~/.claude/CLAUDE.md and ~/.codex/AGENTS.md automatically. Containers:
  • Docker and Docker Compose
  • Docker Buildx
Editors:
  • vim, neovim
Tools:
  • git, curl, wget, jq, ripgrep, sqlite3, rsync, tree, file, unzip
  • GitHub CLI (gh)
Monitoring:
  • btop, atop, iotop, ncdu
Media:
  • ffmpeg, ImageMagick
Network:
  • mitmproxy, socat, netcat
  • Headless Chrome (via headless-shell)
System:
  • nginx (configured on port 8000, disabled by default)
  • systemd (full init system)
  • openssh-server, openssh-client
Node.js 24 is installed via nvm and available in interactive shells (SSH, boxd connect). It is not on PATH for non-interactive boxd machine exec calls, which use /bin/sh -c and don’t source ~/.bashrc. To use Node from boxd machine exec, either source nvm first (. ~/.nvm/nvm.sh && node ...) or install it system-wide (sudo apt install -y nodejs npm).
The boxd user has passwordless sudo and is a member of the docker group.