Show HN: machine0 – Persistent NixOS VMs You Control from the CLI

Hacker News Top Products

Summary

machine0 is a CLI tool for provisioning persistent NixOS and Ubuntu VMs with dedicated resources, static IPs, per-minute billing, and features like suspend/resume and golden images.

Hi HN! Excited to launch machine0, a CLI that makes it easy to create, provision and snapshot persistent NixOS (&amp; Ubuntu) VMs.<p>You can think of machine0 as a modern VPS provider. VMs stay on unless switched-off (with 99.99% uptime), they have static IPs and HTTPS endpoints, 1-60 vCPU, up to 240GB RAM and optionally GPUs. The CLI provides commands to manage lifecycle, snapshots and also provision the VMs using Nix flakes or Ansible playbooks. VMs are priced by the minute of usage.<p>What makes machine0 unique is that it has first class support for NixOS! In a nutshell, NixOS lets you define your entire OS as code (think Terraform but for your Linux). A flake declares your system state (packages, services, firewall rules, users...) and pins all dependencies via a lockfile. Given the same flake.nix and flake.lock, `nixos-rebuild switch` always produces the exact same system.<p>The NixOS ecosystem is mature, and flakes are expressive: at the system level you can define packages, what&#x27;s in &#x2F;etc, firewall rules, users &amp; groups etc. At the user level, you can define your shell, aliases, tmux and vim config. Having your entire environment defined as code makes it easy to audit what&#x27;s installed and how things are set up. You can rollback by reverting the last commit. And agents can write the code for you and test it against disposable machine0 VMs.<p>If you&#x27;d like to dive right in, these commands will get you started:<p><pre><code> npm install -g @machine0&#x2F;cli machine0 new my-vm --image nixos-25-11 # create a new nixos VM machine0 provision my-vm .&#x2F;flake#my-profile # provision it using a nix flake machine0 ssh my-vm # ssh in machine0 stop my-vm # stop the VM machine0 images new my-vm my-snapshot # create a snapshot machine0 new my-clone --image my-snapshot # create a new VM from the snapshot </code></pre> - Demo of installation + NixOS provisioning via Claude Code: <a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=RT8N0_e3Vfg" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=RT8N0_e3Vfg</a><p>- Documentation: <a href="https:&#x2F;&#x2F;docs.machine0.io&#x2F;introduction&#x2F;overview">https:&#x2F;&#x2F;docs.machine0.io&#x2F;introduction&#x2F;overview</a><p>- machine0 NixOS flakes: <a href="https:&#x2F;&#x2F;github.com&#x2F;fdmtl&#x2F;machine0-nixos" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;fdmtl&#x2F;machine0-nixos</a><p>If you&#x27;re in the habit of using VMs, or want to know what the NixOS fuss is about, would love for you to give machine0 a try!
Original Article
View Cached Full Text

Cached at: 06/15/26, 06:00 PM

# machine0 Source: [https://machine0.io/](https://machine0.io/) ## Persistent VMs from the CLI Persistent NixOS & Ubuntu VMs, tools pre\-installed\. Dedicated CPU/RAM, static IPs & per\-minute billing\. ## Get Started Now NixOS or Ubuntu with tools pre\-installed\. Dedicated resources, static IPs, per\-minute billing\. $**curl**\-LsSf https://machine0\.io/install\.sh \| sh ## Designed For Long Running Tasks VMs remain on unless stopped or suspended\. Reproducible builds with NixOS flakes or Ubuntu with Ansible\. Dedicated resources, static IPs, per\-minute billing\. All images are open source:[NixOS](https://github.com/fdmtl/machine0-nixos),[Ubuntu](https://github.com/fdmtl/machine0-ubuntu)\. NixOS with Flakes, or Ubuntu & Ansible Deterministic builds, one\-command rollbacks, no drift\. Ubuntu pre\-installed with Docker, Node, Python, Claude Code, and Codex\. Designed to be used from the Terminal Every operation is a CLI command with`\-\-json`\. A remote MCP server lets agents drive everything programmatically\. Dedicated Resources up to 60 vCPU & 240GB RAM Real KVM/QEMU\. 1–60 vCPU, up to 240 GB RAM\. Optional GPUs: H100, H200, L40S, MI300X\. Start, Suspend, Snapshot & Resume Freeze a VM's state, stop billing, restore later\. Create golden images from any VM and spin up clones\. 99\.99% Uptime Across 4 Regions US, UK, EU, and Asia at the same price\. Per\-minute billing starts at $0\.013/hr\. Static IPs & HTTPS Endpoints Every VM gets a public IP and HTTPS at`<vm\>\.mac0\.io`\. No NAT, no tunnels\. ## Pricing Pay\-as\-you\-go, billed per minute\. Same price in all regions\. Suspend VMs to stop billing, resume anytime\. SizeCPURAMDisk$/hour~$/month`small`1 vCPU1 GB25 GB$0\.013$9`medium`2 vCPU2 GB60 GB$0\.034$25`large`2 vCPU4 GB80 GB$0\.052$38`xl`4 vCPU8 GB160 GB$0\.104$76`xxl`8 vCPU16 GB320 GB$0\.208$152`xxxl`16 vCPU64 GB200 GB$0\.825$602`4xl`32 vCPU128 GB480 GB$1\.980$1,445`5xl`48 vCPU192 GB720 GB$2\.970$2,168`6xl`60 vCPU240 GB900 GB$3\.714$2,711 Suspend VMs to stop billing\. You pay only for image storage \($0\.078/GB/month\) while suspended\. Minimum top\-up $5\. Unused credits are refundable\. ## Examples ### Reproducible Development Environments Define your entire OS as code with NixOS\. Spin up clones of your environment with enough resources to compile code, run tests, and use tools like browsers without bottlenecks\. ``` # Create a new NixOS VM $ machine0 new devbox --image nixos-25-11-loaded --size large # Clone the flake, modify the config, and rebuild $ git clone https://github.com/fdmtl/machine0-nixos.git ./ $ claude -p "Add postgres to the loaded profile" $ machine0 provision devbox ./flake.nix#loaded # SSH in and start working $ machine0 ssh devbox $ claude login # Create a golden master snapshot $ machine0 stop devbox $ machine0 image new devbox devbox-gm # Want a clean or larger VM? Spin one up from the image $ machine0 rm devbox $ machine0 new devbox --image devbox-gm --size xxl ``` ### Running OpenClaw & Hermes Autonomous agents like OpenClaw and Hermes need their own machine with isolated credentials\. Create a VM, SSH in, start the agent\. Suspend when you're done to stop billing\. ``` # Create a new OpenClaw VM & SSH in $ machine0 new openclaw --image nixos-25-11-openclaw --size large $ machine0 ssh openclaw # Start the onboarding flow $ openclaw onboard --install-daemon # Done? Back up your data and suspend the VM $ machine0 sync pull openclaw:~/.openclaw/ ~/Backups/openclaw $ machine0 suspend openclaw # Running Hermes is similar $ machine0 new hermes --image nixos-25-11-hermes --size large $ machine0 ssh hermes ``` ### Hosting Every VM gets its own static IP and HTTPS endpoint\. VMs persist until stopped, suspended, or removed, with 99\.99% uptime across 4 regions\. Good for hosting web apps, databases, or anything that needs a stable address\. ``` $ machine0 new webserver --image nixos-25-11-loaded --size small $ claude -p "Use machine0 to start a webserver on port 80 on the webserver VM" # Get the VM's IP $ machine0 get webserver # Open the authenticated HTTPS endpoint in your browser $ open https://webserver.mac0.io ``` ## FAQ ## Get Started Now NixOS or Ubuntu with tools pre\-installed\. Dedicated resources, static IPs, per\-minute billing\. $**curl**\-LsSf https://machine0\.io/install\.sh \| sh

Similar Articles