## 1.0.89 May 12, 2026
- Image size mismatch errors now tell you the minimum VM size needed (e.g. "image was made with an xl VM, use --size xl or larger") instead of showing raw disk gigabytes.
- Error messages no longer include documentation links, keeping CLI output cleaner and easier to maintain.
## 1.0.88 May 12, 2026
- Web dashboard now mirrors the CLI for machines, images, and SSH keys. Machine rows show the correct status (
RUNNING, STOPPED, STARTING, ERRORED, SUSPENDED, etc.) with the right colour and a spinner during transitions, instead of collapsing every non-running state into "Stopped". Tables show the columns the CLI shows: Name / Status / IP / Size / Region for machines, Name / Description / Status / Region(s) for images, Name / Fingerprint / Type / Default for SSH keys.
## 1.0.85.0 May 10, 2026
- Resuming a suspended VM with a large disk (250GB+) no longer creates duplicate instances. Previously, the resume could time out and retry up to 5 times, each creating a new VM at the provider. The machine would get stuck in ERRORED state with no way to recover. Now retries reuse the existing instance, and
machine0 start works on errored machines from failed resumes.
## 1.0.85 May 10, 2026
- Redemption code onboarding: share a promo link (
app.machine0.io?redeem=<code>) and new users get free credits applied during sign-up. The login page shows the credit amount waiting, and after sign-up users can optionally save a card on file via Stripe for uninterrupted service when credits expire.
machine0 sizes no longer requires login. You can check pricing without an account.
- Fixed an open redirect vulnerability in the email login flow where the
returnTo parameter was not validated before navigation.
## 1.0.84 Apr 28, 2026
- Three new Premium Intel sizes:
4xl (32 vCPU / 128 GB), 5xl (48 vCPU / 192 GB), and 6xl (60 vCPU / 240 GB). Available in US region. Run machine0 sizes to see them.
## 1.0.82 Apr 26, 2026
- When creating a VM with an image too large for the selected size, the error now tells you the exact command to run. Previously:
Run: machine0 ls (useless). Now: Run: machine0 new <vm> --size xl --image nixx with the cheapest compatible size calculated automatically.
## 1.0.81 Apr 26, 2026
- SSH sessions no longer show a misleading "SSH connection failed after retry" error when the remote VM reboots. Previously, rebooting a VM while connected via
machine0 ssh would display an error and suggest retry commands. Now the CLI exits cleanly, matching the behavior of other connection interruptions like Ctrl+C.
## 1.0.80.1 Apr 26, 2026
--metadata now works when creating a new image via machine0 images save and machine0 images upload. Previously, metadata was silently dropped on the first image creation and only applied to subsequent versions.
## 1.0.80.0 Apr 26, 2026
- CLI login now works on Linux systems where
/tmp is a separate filesystem (NixOS, Docker containers, Orbstack VMs). Previously, authenticating via machine0 login or any command that triggers login would fail with EXDEV: cross-device link not permitted.
## 1.0.79.2 Apr 26, 2026
- Snapshots are no longer immediately deleted when your balance runs low. Previously, if you had no running VMs and your balance dropped, all your snapshots were destroyed instantly with no warning. Now you get a 14-day grace period with email warnings at the start and 48 hours before deletion. Topping up your balance at any point during the grace period saves your snapshots.
## 1.0.79.1 Apr 25, 2026
- Suspend snapshots are now automatically cleaned up when a VM resumes. Previously, the snapshot image persisted after resume, costing ~$5/month in storage until manually deleted.
- Re-suspending a previously suspended VM now creates a fresh snapshot of the current state. Previously, the stale snapshot from the first suspend was reused, meaning any changes made after resume would be lost.
- Image version management moved to
machine0 images versions subcommand group. New commands: versions ls <image>, versions get <image> <version>, versions promote <image> <version>, versions rm <image> <version>. Replaces images publish, images get --image-version, and images rm --image-version.
## 1.0.79.0 Apr 25, 2026
xxxl size now works. Previously, creating an xxxl machine would fail because it referenced a DigitalOcean droplet size that doesn't exist. The xxxl tier now uses a General Purpose dedicated-CPU droplet (16 vCPU, 64 GB RAM, 200 GB disk) at $0.825/hr.
machine0 start now works on both stopped and suspended VMs. No need to remember machine0 resume — just use start for everything. The resume command has been removed.
## 1.0.78.3 Apr 25, 2026
- Auto top-up no longer triggers incorrectly when short-lived CI machines are running. Previously, ephemeral machines could spike the billing threshold calculation, causing unnecessary charges even with plenty of balance remaining.
## 1.0.78.2 Apr 24, 2026
machine0 resume <vm> no longer briefly shows ERRORED status before completing. Previously, resuming a suspended VM could trigger a false "machine is in an error state" message if the VM took more than a couple of minutes to provision.
## 1.0.78.1 Apr 24, 2026
machine0 ls now shows SUSPENDING status while a VM is being suspended, instead of briefly showing STOPPING then STOPPED before the final SUSPENDED state
## 1.0.78.0 Apr 23, 2026
- Every read-only CLI command now supports
--json for structured output: machine0 get <vm> --json, machine0 images get <image> --json, machine0 keys get <key> --json, machine0 whoami --json, machine0 billing --json, machine0 sizes --json, and machine0 config get --json. Pipe to jq or feed directly to scripts and coding agents.
machine0 images get <image> --image-version <n> now displays version metadata as pretty-printed JSON below the details table
machine0 images get <image> versions table: "Created" column renamed to "Created At" and now shows date and time instead of date only
machine0 images get <image> versions table: removed empty "Notes" column (notes were always stored as metadata, never displayed here)
## 1.0.77 Apr 23, 2026
- Suspend and resume VMs:
machine0 suspend <vm> snapshots your VM and deletes it from the cloud so you only pay for image storage (~$0.078/GB/month instead of full VM cost). machine0 resume <vm> restores it to running state from the snapshot.
- Suspended VMs appear in
machine0 ls with SUSPENDED status and show $0/month cost
- Web dashboard shows Suspend/Resume actions for VMs
- Deleting a suspended VM automatically cleans up its snapshot image
## 1.0.76 Apr 22, 2026
- First-time user experience: new signups now land on an onboarding page to fund their wallet before creating their first VM
- CLI commands like
machine0 new automatically trigger the login flow when run without a saved session — no need to run machine0 login manually first
/connect page shows a "Payment confirmed" banner when users arrive after completing a wallet top-up
## 1.0.75 Apr 21, 2026
machine0 ls, machine0 keys ls, and machine0 images ls now take --json for parseable output. Pipe straight into jq, feed to coding agents, or script against structured fields without scraping tables.
machine0 ssh <vm> <command> no longer hangs on commands with complex quoting. The CLI passes argv through to the remote instead of joining into a single string — ~/paths, escaped quotes, and && chains all survive the round trip. SSH keepalives (ServerAliveInterval=30, ServerAliveCountMax=10) also prevent dead channels from blocking forever (~5 min timeout, generous enough to outlast nixos-rebuild package download stalls).
machine0 ssh no longer silently re-runs a command when the network drops mid-execution. Retries only happen in the initial connection phase for freshly-booted VMs, so non-idempotent commands (apt upgrade, migrations, file moves) can't double-apply after a keepalive disconnect.
machine0 provision now uses the same SSH keepalives as every other CLI command, so dead channels during long nixos-rebuild runs time out instead of hanging indefinitely.
machine0 sync push now prints per-file itemized changes (rsync -i), so re-syncs show exactly what transferred. Watch mode also surfaces rsync errors instead of silently swallowing them.
machine0 ssh <vm> <command> now runs commands under the remote user's default non-login shell (previously bash -lc). Tools that rely on PATH set only in ~/.bash_profile (nvm, pyenv, some brew shims) may no longer be found. Wrap them explicitly: machine0 ssh <vm> bash -lc 'your-command'.
## 1.0.72 Apr 21, 2026
- CLI errors now always include a next step. Every error suggests what to run, where to look, or explains why the command can't proceed in the current shell. Agents running non-interactively get different guidance (env vars, MCP endpoint) from humans at a terminal (copy-paste commands, docs links). No more dead ends.
## 1.0.71.1 Apr 21, 2026
- Privacy policy updated: product analytics now go to PostHog (EU-hosted, Frankfurt) instead of Segment (US). Subprocessor list reflects the change. Effective date bumped to 21 April 2026.
## 1.0.71.0 Apr 21, 2026
- CLI now produces clean, parseable output when piped. Tables drop their box-drawing borders and ANSI colors, and the spinner is suppressed — so
machine0 ls | jq-style pipelines and coding agents see plain column-aligned text instead of escape-code soup. FORCE_COLOR=1 preserves decoration when you want it.
- Update-notifier no longer hijacks piped output — the "update available" box only shows in an interactive terminal, and no longer exits the process before your command runs.
- Destructive commands (
machine0 rm, machine0 update) now fail with a clear "pass --yes to proceed" error when run non-interactively, instead of hanging on a confirmation prompt that cannot be answered.
- README: new "Using machine0 with AI agents" section pointing to the hosted MCP endpoint at
https://app.machine0.io/mcp and MACHINE0_API_TOKEN for non-interactive auth.
## 1.0.68 Apr 20, 2026
machine0 provision now accepts Nix flake references. Use ./path/flake.nix#profile, ./dir#profile, path:./dir#profile, or a remote ref like github:owner/repo#profile to target a specific NixOS configuration. The directory form still works; add #profile to pick a non-default profile.
machine0 images upload --metadata <json> — attach a JSON object to the new DRAFT version (only applied when creating a new version of an existing image).
## 1.0.64 Apr 17, 2026
- NixOS provisioning is now a pure nix flake.
machine0 provision <vm> ../machine0-nix#loaded scp's the flake and runs nixos-rebuild switch. Claude Code ships as a pinned nix package (faster provisioning, reproducible version).
- New NixOS VMs come with the
nix user pre-configured and SSH hardened from first boot. machine0 ssh <vm> connects as nix immediately, no post-provision username flip required.
machine0 images upload --default-ssh-username <user> — set the SSH username that machine0 ssh will use for VMs from this image. Useful for custom images where the default user isn't root or ubuntu.
## 1.0.61 Apr 16, 2026
- NixOS VMs now get the correct hostname by passing a NixOS-native config snippet as user-data
## 1.0.60 Apr 15, 2026
- CLI help now groups account commands (login, logout, whoami, billing, topup) under their own ACCOUNT section for easier scanning
- File sync commands show as FILE SYNC with simpler
<local> and <remote> argument names
- Use case commands grouped under USE CASES with VM size and specs in descriptions
- Consistent
[flags] terminology and full command paths in all help output
## 1.0.59.4 Apr 15, 2026
- Full MCP reference documentation: browse all 28 tools with parameters, descriptions, and examples at docs.machine0.io
- MCP setup guides for Claude Desktop, Claude Code, and other MCP clients
- MCP tool descriptions now include detailed guidance on managed keys, provisioning times, and common error recovery steps
- Documentation navigation restructured with expandable Reference section containing CLI and MCP sub-groups
- MCP setup command updated from local CLI proxy to remote server (
https://app.machine0.io/mcp)
## 1.0.59.3 Apr 15, 2026
- Remote command execution via MCP: run shell commands on your VMs directly from any MCP-compatible AI assistant using
ssh_exec
- Managed SSH keys now enable server-side command execution, the recommended key type for MCP workflows
- Updated privacy policy and DPA to reflect remote execution capabilities
## 1.0.59.2 Apr 14, 2026
- Full VM lifecycle via MCP: create, start, stop, reboot, destroy machines from any MCP-compatible AI assistant
- SSH key management via MCP: create, list, update, and delete SSH keys
- Image management via MCP: create images from VMs, manage versions, promote/remove versions
- Size listing via MCP: browse available VM sizes with pricing and regional availability
- Structured error codes in MCP responses for actionable LLM feedback (e.g.,
INSUFFICIENT_FUNDS, MACHINE_NOT_READY)
- MCP endpoint now enforces per-user rate limiting (was bypassed due to missing flag check)
## 1.0.59.1 Apr 9, 2026
- MCP server endpoint at
/mcp for AI tool integration (Claude Code, Cursor, etc.)
- OAuth authentication flow for MCP clients with consent screen
vm_list MCP tool to list your virtual machines from any MCP-compatible AI assistant
- API key authentication support for MCP endpoint via
x-api-key header
## 1.0.59.0 Apr 9, 2026
- Every CLI error now shows an actionable fix command (e.g.,
Run: machine0 topup --amount 10 for insufficient balance, Run: machine0 start <vm> for stopped VMs)
- New error detection for insufficient balance, duplicate VM names, VM not found, machine limit, and account suspension
machine0 ssh now handles STOPPED, DESTROYED, ERRORED, and UNAVAILABLE VMs with specific recovery hints
- Fixed
machine0 ssh failing on freshly created VMs by adding retry logic (2s delay after boot, one retry after 5s on connection refused)
- Fixed CLI spinner not rendering in Ghostty and other terminals
- Fixed broken documentation link on OpenClaw use case page
## 1.0.57 Apr 8, 2026
machine0 sync push and machine0 sync pull commands for syncing files between your local machine and VMs using rsync over SSH
--watch flag on sync push to automatically re-sync when local files change
--dry-run flag to preview what would be transferred
--delete flag to remove files at the destination that don't exist at the source
## 1.0.56.0 Apr 8, 2026
- New
machine0 billing command shows usage breakdown by month, grouped by resource name and type (Machine, Image, Bandwidth)
- Usage defaults to current month; pass
YYYY-MM to view a specific month (e.g., machine0 billing 2026-03)
## 1.0.55.1 Apr 3, 2026
- Fixed 500 errors when creating machines or baking custom images (missing
metadata column on image_versions table due to skipped database migration)
## 1.0.55.0 Apr 3, 2026
- VM proxy URLs simplified from
<name>-<random>.mac0.io to <name>.mac0.io — shorter, easier to remember
- VM names now allow up to 63 characters (previously 46)
- VM names are automatically lowercased on create and rename
- CLI config file renamed from
config.env to machine0.env — both in ~/.machine0/ and as a new per-project override in your current working directory
- Config precedence is now: environment variables >
./machine0.env (current directory) > ~/.machine0/machine0.env > defaults
machine0 config get now shows * for home directory overrides and ** for current directory overrides
## 1.0.54.0 Apr 3, 2026
- Custom images that failed to transfer to all regions (stuck in ERRORED with "do api error: 422") can now be retried successfully
## 1.0.53.0 Apr 2, 2026
machine0 images get now shows the SSH username for each image and version, so you know which user to connect as
## 1.0.52.0 Apr 2, 2026
- Default API rate limit increased from 500 to 1000 requests per hour
- Rate limit errors during VM boot polling now back off gracefully instead of crashing the command
- Creating a VM with an image that is still being prepared now shows "image is not ready yet" instead of the confusing "image not found" error
- Eliminated redundant API calls during
machine0 use and machine0 ssh flows
## 1.0.48.0 Apr 1, 2026
- Image version status now correctly shows "READY" instead of "CREATING" for system images
machine0 images ls now shows the image Type column
## 1.0.46.0 Mar 31, 2026
machine0 use no longer fails with "Permission denied (publickey)" when SSH keys aren't ready yet on a freshly launched VM
- SSH connections to new VMs now automatically retry with backoff instead of immediately failing
## 1.0.45.0 Mar 31, 2026
- Image versioning: track, promote, and retire versions of your custom images with
machine0 images versions commands
machine0 get now shows which image version a VM was created with
## 1.0.44.0 Mar 31, 2026
- Support for FIDO/U2F hardware security keys (YubiKey, etc.) when adding SSH keys
## 1.0.42.0 Mar 30, 2026
- Suspension now triggers based on dynamic residual runway cost instead of fixed 1-hour threshold, giving users ~78 hours of runway (for a SMALL machine) to top up before resources are suspended
- Auto top-up attempts start 48 hours before the dynamic suspension point instead of at a fixed runway threshold
- Low balance warnings fire relative to the suspension point instead of at a fixed 6-hour runway
- Residual cost calculation accounts for estimated snapshot storage, existing image storage, and async suspension time with 10% safety margin
## 1.0.36.0 Mar 27, 2026
- Removed
--enable-proxy flag from machine0 new and machine0 update commands
- Removed
DEFAULT_ENABLE_PROXY config setting
- HTTPS proxying is now always on for all VMs (authenticated via session cookies)
## 1.0.33.0 Mar 26, 2026
- New
machine0 use webserver command sets up a VM as a web server and SSHs into it
## 1.0.32.0 Mar 25, 2026
- Improved error messages when the server is temporarily unreachable
## 1.0.31.0 Mar 24, 2026
- Firewall enabled by default on all new VMs via
ufw
- Security hardening for proxy authentication and session permissions
## 1.0.30.0 Mar 22, 2026
- Rate limit errors now correctly return
429 Too Many Requests instead of 401
## 1.0.29.0 Mar 21, 2026
- New
--description flag on machine0 images new to annotate custom images
- Fixed GPU sizes incorrectly shown as available when no region had capacity
## 1.0.28.0 Mar 20, 2026
- New
machine0 update command to rename VMs
- CLI now supports authentication via
MACHINE0_API_TOKEN environment variable
- New API token management page in the web dashboard
- New billing page with Stripe Customer Portal access
- API tokens are now obfuscated in
machine0 config get output
- Fixed CLI update notification showing incorrect package name
- Fixed duplicate regions appearing in machine creation
## 1.0.27.0 Mar 19, 2026
- Machine URLs are now hidden in CLI output when no IP is assigned yet
## 1.0.26.0 Mar 16, 2026
- Machines are now automatically suspended when wallet balance runs out
- Fixed SSH key provisioning for GPU instances
- Fixed interactive SSH sessions showing spurious errors on exit
- Machines in UNAVAILABLE status can now be destroyed
## 1.0.25.0 Mar 15, 2026
- New
openclaw image available
- SSH key management improvements
## 1.0.24.0 Mar 14, 2026
- Wildcard subdomain proxying, access VMs at
*.mac0.io
- Always-on auto top-up keeps your wallet funded automatically
- Bandwidth billing now tracks and charges for network usage
- Streamlined CLI with merged sizes table and top-up dialog
## 1.0.23.0 Mar 13, 2026
- Google OAuth sign-in
- Stripe integration for wallet top-up payments
- GPU instance support
- Fixed email verification links pointing to wrong URL
## 1.0.22.0 Mar 12, 2026
- Email verification added to the sign-up flow
## 1.0.21.0 Mar 10, 2026
- Multi-region support:
us, uk, eu, asia
- New
machine0 sizes command to view available sizes and pricing
## 1.0.0.0 Mar 5, 2026
- Initial public release
- CLI available via
npm install -g @machine0/cli
- Pay-as-you-go billing with auto top-up