# Machines

> What a box is made of: sizes and disks, Ubuntu 24.04 on a dedicated x86_64 virtual machine, what comes preinstalled, and the Prized processes that run beside your work.

URL: https://prized.dev/docs/machines

## Sizes [#sizes]

The live shape and price table is at https://prized.dev/pricing.

A box is one dedicated virtual machine in the size you pick; the size decides the vCPUs and memory, the disk it is born with, and the hourly rate. Pick it by label or short name (`prized box new --size Small`; `xs`, `s`, `m`, `l`, `xl`, or the ids `nano`, `micro`, `lite`, `flow`, `pro`, `max`, `ultra` all work) or from the create form; change it later with a [resize](https://prized.dev/docs/boxes#resize). Rates and the plan ladder are on [Billing](https://prized.dev/docs/billing).

* **Nano and Micro are burstable**, sized for editors, agents, and small dev servers rather than sustained full-CPU load; Extra Small and up are fixed-performance.
* **Memory decides what a pause keeps.** Nano through Small hibernate and resume where they were; Medium and larger stop clean ([Pause and resume](https://prized.dev/docs/boxes#pause-and-resume)).
* **The [free credit](https://prized.dev/docs/billing#free-credit) starts Nano through Small,** one box at a time. Medium and larger come with a plan; a box already started on the credit can be resized within the same four sizes.
* **No GPU on any size.**

## Disk [#disk]

One encrypted volume is the root and the only disk: your home directory, Docker images, and the system all live on it.

| Fact      | Detail                                                                                                                                                                                                   |
| --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Type      | SSD (EBS gp3) at baseline performance, always encrypted; snapshots inherit the encryption                                                                                                                |
| Size      | The Disk column above, 40 GB on a Nano to 2 TB on an Extra Large                                                                                                                                         |
| Growing   | Sizing up grows the disk during the same restart ([Resize](https://prized.dev/docs/boxes#resize))                                                                                                                          |
| Shrinking | Never. A box that kept a bigger disk than its size keeps paying that disk's sleep rate, and a snapshot restores only into a size whose disk holds it ([Restore](https://prized.dev/docs/snapshots#restore-into-a-new-box)) |
| Paused    | The disk stays, at the sleep rate. After 14 days paused it is parked as a snapshot: deep sleep ([States](https://prized.dev/docs/boxes#states))                                                                            |
| Snapshots | Block-level, incremental images of this disk, taken while the box runs ([Snapshots](https://prized.dev/docs/snapshots))                                                                                                    |

## Operating system [#operating-system]

Ubuntu 24.04 LTS on x86\_64, fully upgraded when the box image was built. It is your machine: the login user has passwordless `sudo`, is in the `docker` group, and can `apt install` whatever is missing.

* **Your login user is your first name**: lowercased, accents folded, leading digits dropped, letters, digits, and hyphens only, up to 31 characters (`José` signs in as `jose`). When nothing usable survives, or the name collides with a system account such as `git`, the user is `doppel`. A Small box that was ready before you asked for it ([Boxes](https://prized.dev/docs/boxes)) also signs you in as `doppel`, and a box restored or forked from a snapshot keeps its source box's user. `prized box info` shows it.
* **Sandboxes work.** `bwrap` carries the AppArmor grant it needs, so the sandboxes Claude Code and Codex run commands in work; Ubuntu's restriction on unprivileged user namespaces otherwise stays on.

## Preinstalled software [#preinstalled-software]

Baked into the box image, so a fresh box has it from first boot. Nothing is signed in: your agents' credentials come from [your machine](https://prized.dev/docs/credentials).

| What                           | On the box                                                                                                         |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------ |
| Docker Engine, Compose, Buildx | `docker`, `docker compose`, `docker buildx`; the daemon starts at boot, and your user is in `docker`, so no `sudo` |
| Claude Code, Codex CLI         | `claude`, `codex`; per user, each updates itself in place                                                          |
| GitHub CLI                     | `gh`                                                                                                               |
| Compilers and build tools      | `gcc`, `g++`, `make`, `pkg-config`, `git`                                                                          |
| Python                         | `python3`, `pip`, `venv`                                                                                           |
| Shell tools                    | `tmux`, `mosh`, `rg`, `fd`, `jq`, `htop`, `rsync`, `sqlite3`, `zip`, `unzip`, `zstd`, `curl`, `wget`               |
| Desktop stack                  | XFCE, Xvfb, x11vnc, Google Chrome, `xdotool`, `wmctrl`; nothing starts until you open the [desktop](https://prized.dev/docs/desktop) |
| Sandboxing                     | `bwrap` (bubblewrap), with the AppArmor profile above                                                              |
| Sync agent                     | Mutagen's agent, fetched on the first `prized sync add` or `prized setup` ([Sync](https://prized.dev/docs/sync))                     |

Not preinstalled: Node.js, Go, Rust, Homebrew, databases, and the rest of a working environment. The environment step of `prized setup` installs the versions your machine has ([Bring your environment](https://prized.dev/docs/environment)); for a first boot that repeats across boxes, use an [environment](https://prized.dev/docs/environments).

## Architecture and virtualization [#architecture-and-virtualization]

| Fact                  | Detail                                                                                                                           |
| --------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| CPU architecture      | x86\_64 (amd64) only; no arm64 sizes. `prized env` rebuilds or re-pulls arm64-only Docker images for amd64                       |
| Virtualization        | One virtual machine per box with its own kernel; not a container, not a shared host. Docker inside works as on any Linux machine |
| Nested virtualization | Off. KVM is not available inside a box                                                                                           |
| GPU                   | None                                                                                                                             |
| Cloud credentials     | None. A box carries no cloud role, so nothing you run finds provider credentials on it                                           |

Each size maps to one EC2 instance type:

| Size        | Instance type            |
| ----------- | ------------------------ |
| Nano        | `t3a.small` (burstable)  |
| Micro       | `t3a.medium` (burstable) |
| Extra Small | `m6a.large`              |
| Small       | `m6a.xlarge`             |
| Medium      | `m6a.2xlarge`            |
| Large       | `m6a.4xlarge`            |
| Extra Large | `m6a.8xlarge`            |

## Regions [#regions]

| Region               | AWS id      | In the CLI            |
| -------------------- | ----------- | --------------------- |
| US West (Oregon)     | `us-west-2` | `oregon`, the default |
| US West (California) | `us-west-1` | `california`          |

A box lives in one region and can move ([Regions](https://prized.dev/docs/boxes#regions)). The rate for a size is the same in both, and a snapshot stays in the region its box was in.

## What runs on the box [#what-runs-on-the-box]

Beside your own processes, a fresh box runs a small set of Prized services, ordinary systemd units you can inspect (`systemctl status prized-agent`).

| Process                                          | What it does for you                                                                                                                                                                                                                          | What it can see                                                                                                        |
| ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| `prized-agent`, as your login user               | Lists listening ports and their processes, samples CPU, memory, disk, and network, lists tmux sessions, judges idleness for [auto-pause](https://prized.dev/docs/boxes#auto-pause), relays loopback-only ports for [mirroring](https://prized.dev/docs/ports), and updates itself | A read-only view of the system and the process table; it never pauses the box itself                                   |
| `prized-secretsd`, root, loopback only           | The [secrets broker](https://prized.dev/docs/credentials#secrets-for-agents): swaps a placeholder for the real value on requests to the hosts you allowlisted                                                                                                   | Secret values in memory only; idle until a secret is mounted                                                           |
| `sshd`, root, tunnel only                        | Your [sessions](https://prized.dev/docs/sessions), sync, mount, `prized exec`, and every SSH-speaking tool                                                                                                                                                      | Accepts Prized's short-lived certificates, the device keys registered for you, and any key in `~/.ssh/authorized_keys` |
| The tunnel, WireGuard and its websocket fallback | The two ports open to the internet, `udp/51820` and `tcp/443`                                                                                                                                                                                 | Encrypted tunnel traffic only                                                                                          |

On demand: the Mutagen agent while a project syncs, the desktop stack while a desktop is open, and helper scripts the first [remote prompt](https://prized.dev/docs/remote-agents) installs. What reaches Prized from the box is telemetry (vitals, listening ports, top processes, versions), never your files, terminal output, secret values, or agents' sign-ins ([Security](https://prized.dev/docs/security), [Data retention](https://prized.dev/docs/data-retention#telemetry-retention-windows)).

## Networking [#networking]

* **Inbound:** only the tunnel's two ports, on the box's own public IPv4 address. SSH is never on the internet; you reach it, and every port you run, through the tunnel ([Ports](https://prized.dev/docs/ports), [Sessions](https://prized.dev/docs/sessions), [Credentials](https://prized.dev/docs/credentials#the-machine-itself)).
* **Public ports:** none. A box cannot open a port to the internet. To show a running server to a teammate, [share the port](https://prized.dev/docs/ports#share-a-port-with-your-team): a prized.dev link that opens only for signed-in members of your workspace.
* **Outbound:** not filtered.
* **Public IP:** not stable. It changes on a pause and on a [region move](https://prized.dev/docs/boxes#regions); `prized ssh` follows the box.
