Capabilities

One binary. Every machine.

Install it once and you have the whole platform: create machines, fork them, run commands inside them, publish them, and hand any of it to a script.

Your laptop
curl -fsSL https://boxd.sh/downloads/install.sh | sh
boxd auth login
boxd m new

That is the whole setup. Everything below is the same three shapes pointed at different work.

Ninety seconds from nothing to a machine.

No project to create first, no VPC to pick, no YAML. Three commands, and the third one is the one you keep using.

  1. 01

    Install the binary

    One line on macOS or Linux. No runtime to install first, no package manager to appease, nothing to add to your PATH.

    curl -fsSL https://boxd.sh/downloads/install.sh | sh
  2. 02

    Sign in once

    Opens a browser, binds the CLI to your account, and writes the credential where the binary expects it. You will not do this again on this machine.

    boxd auth login
  3. 03

    Make a machine

    A real Linux computer, yours, in about the time it takes to read this line. From here every other verb is the same shape.

    boxd m new

Every surface has a verb.

Four groups, and none of them is a second-class path to something the console does better — the console calls the same API this does. Run `boxd --help` for the whole tree.

GIFNeeded

The REPL: run bare `boxd` in a terminal to get the banner, then type `machine new` and `machine ls` WITHOUT the boxd prefix, and show tab completion firing at least once. The missing prefix and the completion are the two things to capture.

Or just type `boxd`.

Run the binary with no arguments and it drops into a REPL against your account. Inside it the prefix goes away — you type `machine new`, not `boxd machine new` — and it opens with your machines and snapshots listed, tab completion over the whole tree, and the same verbs and flags as the one-shot CLI.

boxd
Worth being precise about

What --json changes.

Plenty of CLIs have a JSON flag on the three commands someone remembered to add it to. Here it is declared global, so it is valid on every subcommand in the tree — which is the difference between a CLI you can script and one you have to parse.

It is also why the same binary works as an agent's hands. An agent doesn't need a library to use boxd; it needs output it can rely on, from the same verbs a person types.

Who ends up using it.

Developers
You already live in a terminal. This is one more binary that behaves like the ones you trust — flags where you expect them, exit codes that mean something, and help that is accurate.
Agents
Anything a person can do here, an agent can do unattended. Same verbs, same flags, and --json on every one of them, so nothing has to be scraped out of prose.
CI and scripts
API keys are created from the CLI itself and fenced to one org, so a pipeline gets exactly the reach it needs and nothing more.
FAQ

About the CLI

There are Python and TypeScript SDKs, and they are genuinely optional — the CLI talks to the platform directly and covers the whole surface. Most people never import anything. If you do want a library, it wraps the same API the binary uses.

Yes, and that is why --json is a global flag rather than a feature of a few commands. Every invocation can hand structured output to whatever called it. The same binary is also pre-installed inside every machine, so an agent can fork its own environment from within it.

No. The console is a second way to look at the same machines, never the only way to reach something. Anything you can click, you can type — that rule is enforced on the Rust backend rather than left to convention.

It keeps a managed block in ~/.ssh/config current and re-syncs it after anything that changes your machines. Your own entries are left alone. That is what makes VS Code Remote-SSH, JetBrains Gateway, git and scp find every machine without being told about them.

Yes. boxd is self-hostable, and the CLI takes an --api-url flag, or a persisted config set api-url, so the same binary points at whichever cluster you mean.

Used for

The CLI is how every workload on boxd actually gets driven — dev workspaces, coding agents and background agents are all the same handful of verbs pointed at different work.

Every idea gets its own machine

Install the CLI, sign in once, and the first one is yours. Fork it the moment you need another.

Docs