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

# murmur environments plan

> Show which machine types and provisioning models an environment's machine shape tries in each region, cheapest first, without saving the environment.

Shows what an [environment](https://docs.murmur.dev/catalog/environment.md)'s [machine shape](https://docs.murmur.dev/catalog/environment.md#machine-shapes) resolves to. For every region a machine type is offered in, on any cloud, it lists the offers the shape tries — the cheapest qualifying size of each machine family under each provisioning model — cheapest first, each with the disk a VM on it is created with. A VM there is created on the first one the cloud has capacity for. The environment is read from a file and is not saved, so you can try a shape before you write it.

## Synopsis

```bash theme={null}
murmur environments plan -f FILE [--json]
```

## Arguments

| Name | Type | Required | Description |
| - | - | - | - |
| `-f` | string | yes | Environment YAML to plan, in the form [`murmur get environment`](https://docs.murmur.dev/cli/get) prints and [`murmur set`](https://docs.murmur.dev/cli/set) reads. `-` reads standard input. The environment must set `shape` and neither `substrate` nor `disk_type_ref`; the disk size bounds and `provisioning_models` narrow the plan as they would on write. |
| `--json` | bool | no | Print the raw `PlanEnvironment` response as JSON. |

## Output

One block per region, separated by a blank line.

| Line | Description |
| - | - |
| Headline | `region: N qualifying, tries <machine type> at <rate> <model> first`, or `region: none qualify`. |
| Offer rows | Each offer in the order a VM tries them: machine type, machine family, vCPUs, memory, hourly rate under its provisioning model, and the disk the VM is created with — its disk type, its size (`image-sized` for a disk of the image's own size) and its monthly cost. A machine type can appear twice, once per provisioning model. |
| `removed:` | How many machine type and provisioning model pairings each requirement removed, in the order requirements apply. `by family` counts larger sizes of a family that already has a cheaper size under the same model. |
| `next over the cap:` | The cheapest machine type and provisioning model that meets every requirement but the cost cap, from a family not yet tried under that model. Raising the cap to its rate admits it. |

## Examples

### Try a higher cap on a stored environment

```bash theme={null}
murmur get environment standard | yq '.shape.max_cost_per_hour = 0.5' | murmur environments plan -f -
```

### Plan a file

```yaml standard.yaml theme={null}
name: standard
shape:
  architecture: ARCHITECTURE_AMD64
  min_vcpus: 8
  min_memory_gb: 32
  max_cost_per_hour: 0.4
disk_size_gb: 100
```

```bash theme={null}
murmur environments plan -f standard.yaml
```

```text theme={null}
us-central1: 2 qualifying, tries murmur-e2-standard-8 at $0.2948/h on-demand first
  murmur-e2-standard-8   e2-standard   8 vCPUs  32 GB  $0.2948/h on-demand  murmur-pd-standard 100 GiB $4.40/mo
  murmur-n2d-standard-8  n2d-standard  8 vCPUs  32 GB  $0.3718/h on-demand  murmur-pd-standard 100 GiB $4.40/mo
  removed: 2 by shared core, 9 by cost
  next over the cap: murmur-n2-standard-8 at $0.4274/h on-demand

us-west1: none qualify
  removed: 4 by vcpus
```

## Related

* [environment](https://docs.murmur.dev/catalog/environment.md#machine-shapes): how a machine shape qualifies and orders its offers
* [machine type](https://docs.murmur.dev/catalog/machine-type.md): the catalog a shape chooses from
* [disk type](https://docs.murmur.dev/catalog/disk-type.md): the catalog a shape chooses a disk from


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.