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

# Resources and limits

> Per-VM shape, account quotas, and how state and billing scope.

## Per-VM shape

Every VM gets the same fixed envelope. Need bigger? Email [contact@boxd.sh](mailto:contact@boxd.sh).

| Resource                  | Per VM                                                 |
| ------------------------- | ------------------------------------------------------ |
| vCPUs                     | 2                                                      |
| Memory                    | 8 GiB                                                  |
| Disk                      | 100 GB (copy-on-write)                                 |
| Public IPv4               | 1, unique per VM                                       |
| HTTPS subdomain           | `name.boxd.sh` + as many subdomain proxies as you want |
| Raw TCP/UDP port forwards | 3 (`boxd expose`)                                      |
| Runtime                   | Unlimited                                              |

Disks use copy-on-write — real storage usage grows only as you write data. A freshly-forked VM uses near-zero disk on top of its parent until it starts diverging.

## Account limits

| Limit                                  | Default                     |
| -------------------------------------- | --------------------------- |
| Concurrent VMs                         | 10                          |
| API keys                               | Unlimited                   |
| Goldens (long-lived VMs you fork from) | Counts toward the 10-VM cap |
| Forks                                  | Count toward the 10-VM cap  |

Hit the cap? [Destroy something](/reference/external-cli#managing-machines) or ask us to raise it. Raises for real workloads are usually same-day.

## Lifecycle states and what they cost

A VM moves through three states automatically:

| State                           | Memory location              | Wake time       | Costs you         |
| ------------------------------- | ---------------------------- | --------------- | ----------------- |
| **running**                     | Live in RAM, vCPUs scheduled | already running | full VM resources |
| **standby** (auto-suspend)      | Frozen snapshot in host RAM  | sub-millisecond | near zero         |
| **hibernated** (auto-hibernate) | Snapshot written to disk     | \~85ms          | effectively free  |

The transitions are automatic and invisible to your app. A VM that gets traffic occasionally costs you almost nothing the rest of the time — see [Suspend & resume](/how-it-works/suspend-resume) for the mechanics and tuning knobs.

Hibernated VMs are why an idle golden, a parked PR preview, or a long-running agent workspace can sit around for days or weeks without burning resources. The wake-on-packet path means the user can't tell.

## What counts toward the VM cap

* **Running** and **standby** VMs count.
* **Hibernated** VMs count.
* **Destroyed** VMs don't.

If you're filling the cap with hibernated workspaces, that's the expected use of the cap — but if you need more headroom for active work, ask for a bump.

## Pricing scope

Resources are flat on the Individual tier (€20/month) and shaped per-deal on Teams. See [Pricing](/reference/pricing).

## Self-hosted

When you self-host boxd, you set the quotas. `boxd-ctl user set-quota` overrides the platform defaults per user. See [Self-hosting](/how-it-works/self-hosting).
