> ## Documentation Index
> Fetch the complete documentation index at: https://docs.boat.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Machine Capabilities

> What's pre-installed on every box and what you can do with it.

Every box is a Linux VM with a curated set of tools available from the moment you SSH in. Nothing to install before you start working.

## Machine types

Boxes come in four sizes. Pick one with `--type` when you create the box:

|                                     | `small`        | `default`      | `large`        | `xlarge`              |
| ----------------------------------- | -------------- | -------------- | -------------- | --------------------- |
| CPU                                 | 2 shared vCPUs | 4 shared vCPUs | 8 shared vCPUs | 16 shared vCPUs       |
| Memory                              | 4 GB RAM       | 8 GB RAM       | 16 GB RAM      | 32 GB RAM             |
| New bare-metal root disk            | 70 GiB SSD     | 70 GiB SSD     | 160 GB SSD     | 320 GB SSD            |
| Bare-metal user-data restore budget | 50 GiB         | 50 GiB         | 120 GB         | 270 GB                |
| Free on a fresh Hetzner box (`df`)  | 17 GB          | 53 GB          | 125 GB         | bare metal only       |
| Machine time                        | 0.5x           | 1x             | 2x             | 50/9x, or \$0.20/hour |
| Architecture                        | x86\_64        | x86\_64        | x86\_64        | x86\_64               |

GB means 1,000,000,000 bytes. GiB means 1,073,741,824 bytes. The root disk includes
the operating system and pre-installed tools. The user-data restore budget leaves
space for that image, filesystem overhead, and restore staging. It is not a
filesystem quota or the compressed size of your snapshots.

The preinstalled tools take about 20 GB, which is why the free space differs from the
disk size. The "free" row is what `df` reports on a Hetzner box you just created.

Public-cloud sizes and restore budgets are unchanged. Hetzner primary placements
have 40, 80, and 160 GB roots for `small`, `default`, and `large`, with restore
budgets of 12, 50, and 125 GiB. CloudStack has 50 GB roots for `small` and 100 GB
roots for `default` and `large`, with restore budgets of 20 and 70 GiB respectively.
Emergency Hetzner CPX22 placements have 80 GB roots and a 50 GiB restore budget.
Restores with a known larger footprint skip destinations that cannot hold them.
Available space depends on the machine you receive and what you have installed.

Existing bare-metal disks are not resized. Older `large` and `xlarge` machines
keep 100 GiB roots and 70 GiB restore budgets until replaced. `small` and `default`
keep their existing disk sizes and budgets. `xlarge` remains bare-metal only.

`xlarge` is available on the \$100 monthly plan and above. It has no public-cloud placement. An
Ascii operator must allocate it on bare metal, so contact us before creating, resuming, forking,
or deploying a named snapshot as `xlarge`.

<CodeGroup>
  ```bash CLI theme={null}
  box new
  box new --type small
  box new --type large
  ```

  ```bash curl theme={null}
  curl -sS -X POST "https://ascii.dev/api/box/v1/boxes" \
    -H "Authorization: Bearer $BOX_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{"type":"large","ttlSeconds":3600}'
  ```

  ```ts TypeScript theme={null}
  const created = await box.create({ createBoxRequest: { type: "large", ttlSeconds: 3600 } });
  ```

  ```python Python theme={null}
  created = box.create(CreateBoxRequest(type="large", ttl_seconds=3600))
  ```
</CodeGroup>

Stopping, resuming and forking all preserve the type by default, and a fork inherits the type of
the box it came from.

### Changing size

Pass `--type` to `resume` or `fork` to move a box to a different size. Both already restore a
snapshot onto a fresh machine, so resizing costs nothing beyond the resume or fork itself. Resume
changes the box in place; fork leaves the source box untouched and applies the new size to the copy.

<CodeGroup>
  ```bash CLI theme={null}
  box resume bx_23456789 --type large
  box fork   bx_23456789 --type small
  ```

  ```bash curl theme={null}
  curl -X POST https://ascii.dev/api/box/v1/boxes/bx_23456789/resume \
    -H "Authorization: Bearer $BOX_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{"type":"large"}'
  ```

  ```ts TypeScript theme={null}
  await box.resume({ boxId: "bx_23456789", resumeRequest: { type: "large" } });
  ```

  ```python Python theme={null}
  box.resume(box_id="bx_23456789", resume_request=ResumeRequest(type="large"))
  ```
</CodeGroup>

Growing always works. Shrinking is rejected with `type_too_small` when the box holds more data than
the smaller machine can take, and the box is left exactly as it was, so a refused resize never
costs you the box. Delete data and let the box snapshot again if you need to shrink past that
point.

Size sets the rate you spend machine time, because you are renting more or less machine. See
[Billing & Limits](/box/billing) for what each rate costs.

<Note>
  When a data centre is out of stock for your type, we place the box on the closest machine we can
  get rather than leave you waiting. That is rare, and it is always the largest available option; if
  it matters for your workload, stop and start the box to be re-placed.
</Note>

## Pre-installed tools

### AI & automation

| Tool                     | Description                                                                                                     |
| ------------------------ | --------------------------------------------------------------------------------------------------------------- |
| `claude`                 | Claude Code CLI, an AI coding assistant                                                                         |
| `codex`                  | OpenAI Codex CLI                                                                                                |
| `pi`                     | Pi coding agent ([pi.dev](https://pi.dev))                                                                      |
| `opencode`               | OpenCode terminal coding agent                                                                                  |
| `hermes`                 | Hermes Agent by Nous Research, installed on first run (browser tools not included: `hermes` offers to add them) |
| `openclaw`               | OpenClaw CLI, installed on first run (gateway not started; run `openclaw gateway` yourself if you want it)      |
| `agent` / `cursor-agent` | Cursor CLI agent, installed on first run                                                                        |
| `prime-agent`            | Prime Intellect's Prime Agent                                                                                   |
| `kimi`                   | Kimi Code CLI by Moonshot AI                                                                                    |
| `host`                   | Expose localhost services to the internet                                                                       |
| `ascii-record-desktop`   | Record the box desktop to an MP4                                                                                |
| `box`                    | Box CLI inside the VM                                                                                           |

These harnesses are installed system-wide (`/usr/local`, `/opt`), so they cost nothing in your snapshots and come back after a stop/resume. `hermes`, `openclaw` and `cursor-agent` are the exception: the command is on PATH from the start, and the first time you run it the box installs that harness, then keeps it in your snapshots. Measured on a fresh box: `cursor-agent` 7 s, `openclaw` 35 s, `hermes` 43 s the first time, and milliseconds every time after. Each one signs in with its own `login` command; `box prompt` and the Agents page drive `claude` and `codex` today. Installing your own copy (for example `npm i -g` or the vendor installer into `~/.local/bin`) shadows the preinstalled one and is kept in your snapshots as usual.

### Languages & runtimes

| Tool                                        | Description                                                                                                                                                                               |
| ------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `node` / `npm` / `nvm`                      | Node.js 24 with npm by default (nvm-managed, also linked into `/usr/local/bin` so non-login shells get it); the apt Node.js 20 remains for compatibility, and nvm installs other versions |
| `bun` / `bunx`                              | Bun JavaScript runtime                                                                                                                                                                    |
| `deno`                                      | Deno JavaScript/TypeScript runtime                                                                                                                                                        |
| `pnpm`                                      | JavaScript package manager                                                                                                                                                                |
| `python3` / `pip` / `venv`                  | Python 3 and standard Python packaging tools                                                                                                                                              |
| `uv`                                        | Python project and dependency manager                                                                                                                                                     |
| `go`                                        | Go toolchain                                                                                                                                                                              |
| `rustc` / `cargo` / `rustup`                | Rust compiler, package manager, and toolchain manager                                                                                                                                     |
| `java` / `mvn` / `gradle`                   | Java/OpenJDK, Maven, and Gradle                                                                                                                                                           |
| `kotlin` / `kotlinc`                        | Kotlin runtime and compiler                                                                                                                                                               |
| `scala` / `scalac` / `sbt`                  | Scala compiler and build tools                                                                                                                                                            |
| `ruby` / `gem` / `bundle`                   | Ruby, RubyGems, and Bundler                                                                                                                                                               |
| `php` / `composer`                          | PHP CLI and Composer                                                                                                                                                                      |
| `erl` / `elixir`                            | Erlang and Elixir                                                                                                                                                                         |
| `dotnet`                                    | .NET SDK                                                                                                                                                                                  |
| `R`                                         | R runtime and development packages                                                                                                                                                        |
| `gcc` / `g++` / `clang` / `cmake` / `ninja` | C/C++ build toolchain                                                                                                                                                                     |

### Version control

| Tool  | Description                                        |
| ----- | -------------------------------------------------- |
| `git` | Git                                                |
| `gh`  | GitHub CLI for PR creation, issue management, etc. |

### Utilities

| Tool                   | Description                                                                                                                                                  |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `rg`                   | ripgrep for fast code search                                                                                                                                 |
| `jq`                   | JSON processor                                                                                                                                               |
| `curl`                 | HTTP client                                                                                                                                                  |
| `docker`               | Container runtime with BuildKit. Layer cache is per machine; see [Docker builds across resume and fork](/box/snapshots#docker-builds-across-resume-and-fork) |
| `google-chrome-stable` | Chrome browser and headless browser runtime                                                                                                                  |
| `ffmpeg`               | Media processing                                                                                                                                             |

## Related

* [Desktop Streaming](/box/desktop-streaming)
* [Hosting](/box/hosting)
* [SSH Access](/box/ssh-access)
