System images
NixOS images are built with Nix Flakes and Ubuntu images with Ansible Playbooks
GPU sizes auto-select the appropriate GPU base image (
gpu-h100x1-base, gpu-h100x8-base, or gpu-amd-base). The GPU base images only work with GPU sizes.
Snapshots you take of a GPU VM are regular images with the GPU drivers baked in — you can use them with any size that has enough disk (a 1x-GPU snapshot needs 5xl or 6xl), and snapshots of those VMs stay GPU-compatible, so you can move the work back to a GPU size later. This makes it cheap to park GPU work: snapshot the GPU VM, destroy it, and pay only for snapshot storage until you need it again.
GPU and standard VMs live in different datacenters within the same region. If a snapshot isn’t yet in the datacenter your chosen size needs, machine0 new starts the transfer automatically and asks you to retry — it usually takes a few minutes (check progress with machine0 images get <image>).
Custom images
Snapshot any VM into a reusable image:Versioning
Images support multiple versions. Snapshot the same image name again to create a new version. Promote any version to be the active one. See CLI reference and MCP reference.Environment variables and snapshots
SSH client initial command and snapshots
If the source VM has an SSH client initial command set, it is copied onto the snapshot and inherited by VMs created from that snapshot (override it any time withmachine0 update). Clearing the command on a machine does not remove it from snapshots taken earlier, and pre-existing snapshots are not retroactively updated. The value is stored and displayed in plain text — don’t embed secrets in it; use profile variables for secrets. System images never carry an initial command.