Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/commands/checkpoint.md
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ the checkpoint for inspection.
- Azure cannot create a managed image from an active VM, so the Azure native
path uses a managed OS-disk snapshot. That snapshot requires a managed OS disk
(the default); creation refuses leases started with
`--azure-os-disk ephemeral` or `--azure-os-disk ephemeral-preview`, where
`--azure-os-disk ephemeral`, where
Azure reports success but does not capture live disk state.
- Direct Azure Windows disk snapshots support `windows.mode=normal` leases and
require `--no-reboot=false`. Crabbox
Expand Down
9 changes: 5 additions & 4 deletions docs/commands/run.md
Original file line number Diff line number Diff line change
Expand Up @@ -1132,10 +1132,11 @@ config rather than argv.

Azure one-shot leases use managed `StandardSSD_LRS` OS disks by default so they
can become native checkpoint sources. Use `--azure-os-disk ephemeral` only for
stateless leases that do not need native Azure checkpoint/fork support;
`--azure-os-disk ephemeral-preview` opts into Azure's public-preview
full-caching ephemeral OS disk mode. `--azure-os-disk auto` is accepted for
compatibility and resolves to managed.
stateless leases that do not need native Azure checkpoint/fork support. This
mode enables GA full caching and requires at least eight vCPUs, a supported VM
family, and sufficient local storage. See [Azure disk requirements](../features/azure.md#os-disk-mode).
`ephemeral-preview` is removed; use `ephemeral`. `--azure-os-disk auto` resolves
to managed.

## Flags

Expand Down
10 changes: 6 additions & 4 deletions docs/commands/warmup.md
Original file line number Diff line number Diff line change
Expand Up @@ -305,9 +305,11 @@ sync/run/actions contract. Azure Windows does not provision browser/code.
Azure leases use managed `StandardSSD_LRS` OS disks by default so native
disk-snapshot checkpoints can be created and forked. Use
`--azure-os-disk ephemeral` only for stateless leases that don't need native
Azure checkpoint/fork support. Use `--azure-os-disk ephemeral-preview` for
Azure's public-preview full-caching ephemeral OS disk mode; `--azure-os-disk
auto` resolves to managed.
Azure checkpoint/fork support. This mode enables GA full caching and requires
at least eight vCPUs plus sufficient local storage on a supported VM family.
See [Azure disk requirements](../features/azure.md#os-disk-mode).
`ephemeral-preview` is removed; use `ephemeral`. `--azure-os-disk auto` resolves
to managed.

`--azure-backend dynamic-sessions` keeps `--provider azure` as the family
selector while routing to the `azure-dynamic-sessions` delegated backend.
Expand Down Expand Up @@ -412,7 +414,7 @@ bootstrap, key migration, or failure cleanup.
--reclaim overwrite an existing local claim for this lease
--timing-json print a final JSON timing record on stderr
--azure-backend vm|dynamic-sessions
--azure-os-disk managed|ephemeral|ephemeral-preview|auto
--azure-os-disk managed|ephemeral|auto
```

Provider-specific flags (for example `--azure-backend`, `--e2b-template`,
Expand Down
18 changes: 11 additions & 7 deletions docs/features/azure.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@ dynamic-sessions`; see the [Provider Reference](../providers/README.md).
crabbox warmup --provider azure --class beast
crabbox warmup --provider azure --arch arm64 --class fast
crabbox warmup --provider azure --class beast --azure-os-disk ephemeral
crabbox warmup --provider azure --class beast --azure-os-disk ephemeral-preview
crabbox run --provider azure --class standard -- pnpm test
crabbox warmup --provider azure --target windows --class standard
crabbox warmup --provider azure --target windows --desktop --class standard
Expand Down Expand Up @@ -130,12 +129,17 @@ SSH, Windows, and loopback-only VNC credentials. A per-fork deny-all network
security group keeps the copied VM unreachable until credential rotation
finishes, then Crabbox attaches the normal shared SSH allowlist.

`azure.osDisk: ephemeral-preview` opts into Azure's public-preview
full-caching mode for ephemeral OS disks. Crabbox sends Compute API
`2025-04-01` with `diffDiskSettings.enableFullCaching: true`; for known
Crabbox Azure fallback lists it skips 2-core, 4-core, and no-local-disk SKUs
that the preview cannot support. `azure.osDisk: auto` is accepted for
compatibility and resolves to managed.
`azure.osDisk: ephemeral` selects generally available full caching. Crabbox
sets `diffDiskSettings.enableFullCaching: true` with Compute API `2026-04-01`.
Full caching requires at least eight vCPUs and local storage greater than twice
the OS disk size plus 1 GiB. Supported families are N/L/M/H, D/DC/E/Eb/EC v5-v7,
and F v6-v7. Azure validates local storage capacity for the selected image.
Crabbox filters known unsupported sizes from class fallback lists.
See [Microsoft's prerequisites](https://learn.microsoft.com/en-us/azure/virtual-machines/ephemeral-os-disks#prerequisites-for-full-caching).

`ephemeral-preview` is removed. Replace it with `ephemeral` in config, flags,
and environment variables. Existing `ephemeral` settings now request full caching;
small VMs and Fsv2 no longer qualify. `auto` still resolves to `managed`.

Snapshot performance can be selected explicitly without changing those
defaults. `azure.snapshotSKU` / `--azure-snapshot-sku` controls the storage SKU
Expand Down
2 changes: 1 addition & 1 deletion docs/features/checkpoints.md
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ for new Azure leases. Crabbox refuses native checkpoint creation from Azure
ephemeral-OS-disk leases (Azure reports success but does not capture live disk
state). Azure disk-snapshot forks boot from a specialized OS disk and may inherit
the source machine identity — treat them as exact clones. Use
`--azure-os-disk ephemeral` or `--azure-os-disk ephemeral-preview` only for
`--azure-os-disk ephemeral` only for
stateless leases that do not need native checkpoints.

**Parallels notes.** A forkable Parallels snapshot must be taken from a
Expand Down
12 changes: 6 additions & 6 deletions docs/features/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -347,18 +347,18 @@ azure:
backend: vm # vm | dynamic-sessions
location: eastus
resourceGroup: crabbox-leases
osDisk: managed # managed | ephemeral | ephemeral-preview | auto
osDisk: managed # managed | ephemeral | auto
vnet: crabbox-vnet
subnet: crabbox-subnet
nsg: crabbox-nsg
```

Azure uses managed `StandardSSD_LRS` OS disks by default so leases can support
native disk-snapshot checkpoints. `ephemeral` opts into local OS disks for
stateless leases and disables native Azure checkpoint/fork support.
`ephemeral-preview` opts into Azure's public-preview full-caching ephemeral OS
disk mode and skips known unsupported Crabbox Azure SKUs. `auto` is accepted for
compatibility and resolves to managed.
native disk-snapshot checkpoints. `ephemeral` enables GA full caching for
stateless leases and disables native Azure checkpoint/fork support. It requires
at least eight vCPUs, a supported VM family, and sufficient local storage.
See [Azure disk requirements](azure.md#os-disk-mode). `ephemeral-preview` is
removed; replace it with `ephemeral`. `auto` resolves to `managed`.

### Azure Dynamic Sessions

Expand Down
31 changes: 16 additions & 15 deletions docs/providers/azure.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,6 @@ Azure supports both execution modes:
crabbox warmup --provider azure --class beast
crabbox warmup --provider azure --arch arm64 --class fast
crabbox warmup --provider azure --class beast --azure-os-disk ephemeral
crabbox warmup --provider azure --class beast --azure-os-disk ephemeral-preview
crabbox run --provider azure --class standard -- pnpm test
crabbox run --provider azure --azure-backend dynamic-sessions -- pnpm test
crabbox warmup --provider azure --target windows --class standard
Expand All @@ -89,9 +88,8 @@ crabbox cleanup --provider azure
`--type` is exact (for example `--type Standard_D32ads_v6`). Use `--class` when
you want SKU fallback. Azure leases use managed OS disks by default, so native
checkpoint/fork works without extra flags. Pass `--azure-os-disk ephemeral` only
for stateless leases that do not need native checkpoint/fork. Pass
`--azure-os-disk ephemeral-preview` to opt into Azure's public-preview
full-caching mode for ephemeral OS disks.
for stateless leases that do not need native checkpoint/fork. This mode enables
generally available full caching and requires at least eight vCPUs.

## Fixed operation IDs

Expand All @@ -107,8 +105,8 @@ SKU unless `--type` is explicit). They do not perform SKU, market, or region
fallback, and do not roll back an ambiguous allocation. VM creation is
create-only. Replay observes the original attempt and never submits a second
allocation. This supports VM-image leases, including native Windows and WSL2;
snapshot forks and `ephemeral-preview` disks are not supported on this direct
fixed-ID path. Ordinary direct leases retain their existing fallback behavior.
snapshot forks are not supported on this direct fixed-ID path. Full-caching
ephemeral disks support fixed IDs through create-only SDK requests. Ordinary direct leases retain their existing fallback behavior.

Use `stop --provider azure <lease-id>` for owned cleanup. Successful deletion
retains a terminal tombstone; the ID cannot create another VM. If a failed
Expand Down Expand Up @@ -169,19 +167,22 @@ not supported because those VM sizes do not support nested virtualization.
VM public IP, `private` uses the NIC private IP from the vnet. Use `private` when
connecting through a VPN to the Azure virtual network.

`azure.osDisk` accepts `managed`, `ephemeral`, `ephemeral-preview`, or `auto`:
`azure.osDisk` accepts `managed`, `ephemeral`, or `auto`:

- `managed` (default) provisions a managed `StandardSSD_LRS` OS disk so Azure
native disk-snapshot checkpoints work.
- `ephemeral` opts into a local OS disk. It requires a SKU with ephemeral OS disk
support, fails during provisioning when the selected SKU cannot support it, and
disables native Azure checkpoint/fork.
- `ephemeral-preview` enables Azure ephemeral OS disk full caching with Compute
API `2025-04-01`. It is public preview, has the same checkpoint/fork limits as
`ephemeral`, and skips known unsupported 2-core, 4-core, and no-local-disk
Azure SKUs from Crabbox fallback lists.
- `ephemeral` enables GA full caching with Compute API `2026-04-01`.
It requires ephemeral OS support, at least eight vCPUs, and local storage
greater than twice the OS disk size plus 1 GiB. Supported families are
N/L/M/H, D/DC/E/Eb/EC v5-v7, and F v6-v7. Azure validates image capacity.
Crabbox filters known unsupported class fallbacks. Native checkpoint/fork
remains unavailable.
- `auto` is accepted for compatibility and resolves to `managed`.

`ephemeral-preview` is removed; replace it with `ephemeral`. Existing `ephemeral`
settings now enable full caching, so smaller VMs and Fsv2 no longer qualify.
See [Microsoft's full caching prerequisites](https://learn.microsoft.com/en-us/azure/virtual-machines/ephemeral-os-disks#prerequisites-for-full-caching).

### Environment variables

Direct-mode config can be supplied entirely via environment:
Expand All @@ -196,7 +197,7 @@ CRABBOX_AZURE_LOCATION
CRABBOX_AZURE_RESOURCE_GROUP
CRABBOX_AZURE_IMAGE
CRABBOX_AZURE_WINDOWS_ARM64_IMAGE
CRABBOX_AZURE_OS_DISK # managed | ephemeral | ephemeral-preview | auto
CRABBOX_AZURE_OS_DISK # managed | ephemeral | auto
CRABBOX_AZURE_VNET
CRABBOX_AZURE_SUBNET
CRABBOX_AZURE_NSG
Expand Down
Loading
Loading