new
Create a VM.ls
List all VMs.get
Show VM details: specs, pricing, IP, SSH key, timestamps. For anUNAVAILABLE or ERRORED VM, a Status Info row explains what happened and how to recover.
start
Start a stopped or suspended VM. Suspended VMs are recreated from their snapshot with the same name, size, region, and key. Requires sufficient wallet balance. Also retries a VM that isUNAVAILABLE (the provider was out of capacity) or ERRORED after a failed create or resume. If the size is still out of stock, the command fails immediately with a clear error instead of leaving the VM stuck. See Machines → Out-of-capacity.
stop
Stop a running VM.reboot
suspend
Snapshot the VM, delete the cloud instance, pay only image storage.
The VM moves to
SUSPENDED. Start again with machine0 start. Destroying a suspended VM also deletes its snapshot.
rm
Destroy a VM.ssh
SSH into a VM or run a remote command.ssh, flags go before the VM name — everything after it is the remote command, passed through verbatim (so remote flags like ls -t or bash -lc 'your-command' just work). If the VM is still starting, the CLI waits for SSH. If the VM has disk attachments that are still coming up, the CLI briefly waits for those too before opening the session. Commands run under the remote user’s default non-login shell; for login-shell initialization, use machine0 ssh my-vm bash -lc 'your-command'. Running a command doesn’t allocate a terminal by default — pass -t for interactive programs like htop, sudo prompts, or TUI apps. Forcing a terminal merges stderr into stdout and rewrites line endings, so don’t combine -t with output redirection.
update
Update a VM’s name, default SSH username, or SSH client initial command.machine0 ssh don’t run it). It shows in machine0 get under the SSH key. When you create an image from the VM, the command is copied onto the snapshot, and VMs created from that snapshot inherit it (override any time with machine0 update). Snapshots taken before the command was set are not retroactively updated. The command is stored and displayed in plain text — don’t embed secrets in it; use profile variables for secrets.
provision
Provision a VM with a Nix flake or Ansible playbook.<source> can be a local directory, flake.nix path, remote flake ref, or .yml playbook. Append #profile to pick a specific NixOS configuration.