Skip to main content

new

Create a VM.

ls

List all VMs.

get

Show VM details: specs, pricing, IP, SSH key, timestamps.

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.

stop

Stop a running VM.
Stopped VMs still incur charges. Suspend or destroy to stop billing.

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.
If the VM is still starting, the CLI waits for SSH. If the VM has disk mounts 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, wrap with: machine0 ssh my-vm bash -lc 'your-command'.

update

Update a VM’s name, default SSH username, or SSH client initial command.
The SSH client initial command runs once per session, right after the shell loads — only in the iPhone app’s terminal (requires app 1.2.2 or later; the web terminal and 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 env sets 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.
See Provisioning for details.

sizes

Show available VM sizes and pricing.