# pool


> Interested in trying pools out? Reach out to [support@exe.dev](mailto:support@exe.dev) to ask for access.

Manage your team's VM pools (reserved capacity slices)

## Usage

```
pool <subcommand>
```

## Subcommands

### pool new

Create a pool: reserved capacity for your team's VMs

**Usage:**
```
pool new <name> --cpus=N --region=<region> [--max-vms=M] | pool new <name> --cpus=N --host=<alias> [--max-vms=M]
```

**Options:**
- `--cpus`: number of CPUs reserved for the pool (required; an even number of vCPUs from 4 through 512 (4, 6, 8, and so on; memory is 2 GiB per vCPU))
- `--host`: dedicated host to place the pool on (see 'pool hosts'; cannot be combined with --region)
- `--json`: output in JSON format
- `--max-vms`: maximum number of VMs in the pool (default 100)
- `--region`: region code for the pool (required unless --host is given)

### pool hosts

List the dedicated hosts assigned to your team

**Usage:**
```
pool hosts
```

**Options:**
- `--json`: output in JSON format

### pool list

List your team's pools, or show historical usage with --usage

**Usage:**
```
pool list [pool-name] [--usage [--range=24h|7d|30d]]
```

**Aliases:** ls

**Options:**
- `--json`: output in JSON format
- `--range`: statistics range: 24h, 7d, or 30d (requires --usage)
- `--usage`: show historical CPU and starvation statistics

### pool adopt

Adopt a VM into a pool; this can take several minutes

**Usage:**
```
pool adopt --vm=<vm-name> --pool=<pool-name>
```

**Options:**
- `--json`: output in JSON format
- `--pool`: pool to adopt into (required)
- `--vm`: VM to adopt (required)

**Examples:**
```
pool adopt --vm=builder --pool=compile
```

### pool detach

Detach a VM from its pool into its own standalone capacity

**Usage:**
```
pool detach --vm=<vm-name>
```

**Options:**
- `--json`: output in JSON format
- `--vm`: VM to detach into its own standalone capacity (required)

**Examples:**
```
pool detach --vm=builder
```

### pool resize

Change a pool's CPU capacity or VM cap

**Usage:**
```
pool resize <name> --cpus=N | pool resize <name> --max-vms=N [--force]
```

**Options:**
- `--cpus`: new pool size in vCPUs (required unless --max-vms is set; even, from 4 up to the placement limit)
- `--force`: allow --max-vms below the current VM count (does not stop or evict VMs)
- `--json`: output in JSON format
- `--max-vms`: maximum number of VMs in the pool (required unless --cpus is set)

### pool delete

Delete a pool (refused while it has VMs; --force detaches them)

**Usage:**
```
pool delete <name> [--force]
```

**Options:**
- `--json`: output in JSON format

