boxd command pre-installed. Authentication is automatic — no SSH keys or tokens needed. This lets agents and scripts running inside a machine manage other machines directly.
Like the laptop CLI, the surface is a nested tree: machine (alias m), snapshots (alias snap), manage, env, local, plus info for the current machine and top-level new / connect shortcuts. There’s no auth or config group — auth is automatic, and CLI settings live on the laptop. remove is the canonical delete verb (alias rm).
State-changing and destructive verbs require an explicit other machine — you can’t stop, reboot, or destroy the machine you’re currently inside.
Commands
list/ls, remove/rm, connect/ssh, get/info. All commands accept --json for structured output.
pause vs reboot
pause/resume: warm. Freezes the VMM process, keeps memory, running processes, and open sockets intact. Resume is sub-millisecond. Same mechanism as auto-suspend, but user-triggered. Status becomesstandby.reboot: cold. Kills the VMM process and spawns a new one. Memory lost, takes ~2s.
Organizations & sharing
If you belong to an organization,boxd machine share NAME makes a machine reachable by every member; boxd machine unshare NAME makes it private to you again. When a user asks to “make this machine public,” they mean share it with the org — the *.boxd.sh URL is already public. In-VM you’re always in the owner’s active org context; switching orgs is a laptop-side action (boxd auth switch).
Connected integrations
boxd manage integrations (no subcommand) is the live source of truth for which external accounts the owner has wired into this machine, how to use each, and what else can still be connected. Run it rather than guessing; new integrations appear automatically.
access methods tagged by kind — an env var + API endpoint (graphql/api), a CLI (cli), an MCP server (mcp), or git credentials (git). For example, a connected Linear exposes LINEAR_ACCESS_TOKEN for its GraphQL API, and Slack exposes SLACK_BOT_TOKEN / SLACK_USER_TOKEN / SLACK_TEAM_ID. The output also lists anything available to connect with the exact connect command. Connecting acts on the owner’s personal + private machines; a human does the browser approval. See Integrations.
Env vars & secrets
Set environment variables and secrets that boxd injects into every machine you own. Env vars and secrets share one command —--secret selects the sealed, write-only store. See Env vars & secrets for scopes, naming, and how they’re injected.
Running commands in other machines
The remote command’s stdout and stderr are merged into a single output stream
on this CLI. If you need to filter them separately (e.g.
2>/dev/null to drop
warnings), either redirect inside the command ('cmd 2>/dev/null') or use the
external CLI / SDK from outside the machine, which preserve the split.Copying files between machines
Paths after: are relative to /home/boxd unless they start with /. Uploads stream automatically — no inherent file-size cap.
Proxy management
Defaults to the current machine when--vm is omitted.
Exposing raw TCP/UDP ports
Subdomain proxies route HTTPS only. To expose a database, an SSH daemon, or any non-HTTP service,boxd machine expose opens a raw TCP/UDP port on the machine’s public proxy, forwarded straight to a port inside. The public port is allocated from the 40000–60000 range; connect on name.boxd.sh at that port. See Port forwarding.
In-VM, expose PORT defaults to the current machine; pass a name to expose another.
Local machine access
When client utilities are enabled on the user’s laptop (boxd config set client-utils.enable true), the internal CLI can access files and a browser on the user’s local machine:
BOXD_PROXY_ENDPOINT and BOXD_DEVICE_ID environment variables, which boxd injects into the session automatically when the device you connect from has client utilities enabled.
How it works
The internal CLI is authenticated automatically — the machine you’re inside identifies you, so there is nothing to configure and no token to manage. It acts as the account that owns the machine.Reaching another machine’s services
To hit a running service on another of your machines directly over the private network, resolve it by name: inside any machine,<vmname>.boxd resolves to that machine’s private IP.
<vmname>.boxd form resolves; everything else falls through to normal upstream DNS. See VM-to-VM networking.