machine0: Persistent NixOS and Ubuntu VMs via CLI

machine0 is a cloud infrastructure platform that allows users to deploy and manage persistent NixOS and Ubuntu virtual machines (VMs) entirely through a command-line interface (CLI). The service is specifically designed for long-running tasks, reproducible development environments, and autonomous AI agents that require isolated credentials and dedicated resources.

Core Infrastructure and Capabilities

machine0 utilizes real KVM/QEMU virtualization to provide dedicated CPU and RAM, avoiding the noise of shared environments. The platform supports a wide range of resource configurations and global availability.

Hardware and Scaling

  • Compute Options: VM sizes range from small (1 vCPU, 1 GB RAM) to 6xl (60 vCPU, 240 GB RAM).
  • GPU Acceleration: Optional GPU support is available with H100, H200, L40S, and MI300X hardware.
  • Global Reach: Infrastructure is deployed across four regions: US, UK, EU, and Asia, maintaining a 99.99% uptime SLA.

Networking and Connectivity

Every VM is assigned a public static IP address and a corresponding HTTPS endpoint at <vm>.mac0.io. This architecture eliminates the need for NAT or tunnels, making it suitable for hosting web applications and databases that require stable network addresses.

Deployment and Configuration Models

Users can choose between two primary OS environments, both of which are designed for reproducibility and automation.

NixOS with Flakes

For users requiring deterministic builds, machine0 supports NixOS with Flakes. This allows the entire operating system to be defined as code, enabling one-command rollbacks and the elimination of configuration drift.

Ubuntu with Ansible

For those preferring a standard Linux distribution, Ubuntu images are available and come pre-installed with common developer tools, including Docker, Node, Python, Claude Code, and Codex. These environments can be managed using Ansible for configuration management.

Operational Workflow and Lifecycle Management

All machine0 operations are executed via the CLI, with an optional --json flag for programmatic integration. The platform also includes a remote MCP server to allow AI agents to drive infrastructure changes.

VM Lifecycle Commands

  • Provisioning: New VMs are created using the machine0 new command, specifying the image and size.
  • Configuration: The machine0 provision command applies NixOS flake configurations to a running VM.
  • State Management: Users can use machine0 stop, machine0 suspend, and machine0 resume. Suspending a VM freezes its state and stops compute billing, while only charging for image storage.
  • Snapshotting: The machine0 image new command creates "golden images" from existing VMs, which can then be used to spin up identical clones.

Pricing Structure

machine0 employs a pay-as-you-go model with per-minute billing across all regions.

Size CPU RAM Disk Hourly Rate Approx. Monthly
small 1 vCPU 1 GB 25 GB $0.013 $9
medium 2 vCPU 2 GB 60 GB $0.034 $25
large 2 vCPU 4 GB 80 GB $0.052 $38
xl 4 vCPU 8 GB 160 GB $0.104 $76
xxl 8 vCPU 16 GB 320 GB $0.208 $152
xxxl 16 vCPU 64 GB 200 GB $0.825 $602
4xl 32 vCPU 128 GB 480 GB $1.980 $1,445
5xl 48 vCPU 192 GB 720 GB $2,168 $2.970
6xl 60 vCPU 240 GB 900 GB $3.714 $2,711

Storage Costs: While a VM is suspended, users are charged $0.078/GB/month for image storage. A minimum top-up of $5 is required, and unused credits are refundable.

Community Insights and Use Cases

Community discussion highlights the platform's utility for AI-driven development and the advantages of declarative infrastructure.

AI Agent Integration

Users have reported success using machine0 for hosting autonomous agents like OpenClaw and Hermes, as well as integrating the platform with Claude Code for rapid environment setup.

Declarative Infrastructure

Technical discussions emphasize the superiority of Nix-based distribution for VMs. One contributor noted the value of immutable OS patterns:

"For VMs especially, I want my OS to be immutable. My VMs should contain no state other than my application state. Upgrades should be a full image replacement and reboot."

Other users have raised questions regarding the handling of IPv4 address persistence during per-minute billing cycles and the practicalities of detecting state drift when VMs are modified manually outside of a Nix flake.

Sources