Swift 6 · Two engines · Apple silicon

Virtual machines
that reset faster
than they clean.

1VMTool creates, snapshots, and disposes of Linux, macOS and Windows environments on Apple silicon. A snapshot is an APFS clone, not a copy — so take and restore finish in under a millisecond, no matter how big the disk.

No QEMU. No bundled hypervisor. Zero dependencies — swift build on an empty package graph.

Watch Omarchy — Arch and Hyprland — installed on an Apple silicon Mac, start to finish. 2 min 21 s

0.30ms
Linked clone, measured — not estimated
8
Native screens, every one scriptable
0
Third-party dependencies in the bundle
739tests
Across 127 suites, on an empty package graph
Why it's instant

A snapshot is a clone, not a copy.

APFS clones share blocks until one side changes. Cloning a 64 GiB disk writes almost nothing — so snapshot, restore, and linked-clone all land in the same sub-millisecond, whatever the size.

0.30ms

Linked clone

A directory-level clonefile(2). Instant, and it shares blocks until the copy diverges.

<1ms

Take & restore

Snapshot any node in a real branching tree, then roll back to it just as fast. Size never enters the equation.

APFS

Copy-on-write

A reset writes nothing until the guest does. Disposability is a property of the filesystem, not a background job.

The app

Eight screens. Every one has a CLI equivalent.

The GUI and the 1vm command are both clients of the same core — so nothing you can click is impossible to script, by construction.

Wizard

Installation Assistant

Four routes in, drag-and-drop an ISO anywhere, limits stated per guest before you commit to anything.

Setup

New Machine

Four hardware profiles fitted to this Mac, with a live split meter showing exactly what macOS keeps for itself.

Running

Control Center

A grouped machine list with live host CPU and memory, and per-machine figures at a glance.

History

Snapshot Tree

Real branching with tree glyphs and per-node unique data, plus a rollback mode that discards every write after boot.

Disk

Storage

Allocated vs on-disk vs reclaimable on one volume bar. Clone, archive, and see exactly where the space went.

Settings

Configuration

Eight panes — CPU, graphics, input, devices, network, SSH, sharing, security. No control appears without saying what it costs.

Display

Console

The guest display with a status strip, full screen, and picture-in-picture — reachable from the terminal too.

Glance

Menu Bar

Start, stop, snapshot, and watch host memory without ever opening the main window.

Every screen, unretouched

The interface states its own limits.

Not built, Degraded, Entitlement, experimental — the app says which of those a control is before you rely on it. These are shots of the shipping 0.2.0 build, at the sizes it actually renders.

A safe point, before you need one

A safe point, before you need one

The first clean boot is snapshotted for you, so there is always a state to return to. Restore is a button with the measured cost printed under it — 0.2 ms — not a progress bar.

The command line

Scriptable by construction.

  • clientsNeither front end wraps the other. Both are clients of VMKit, so the app and the CLI can never disagree about what a VM is.
  • --jsonEvery command speaks JSON. Machine output on stdout, errors on stderr — a CI log never interleaves the two.
  • exitExit codes carry meaning. 0 ok · 1 failed · 2 usage · 3 not found · 4 wrong state · 5 unsupported.
1vm — the whole reset loop
$ 1vm create dev --cpu 4 --memory 8GiB --disk 64GiB --iso alpine-virt-3.21.0-aarch64.iso created dev.vm · EFI · virtio-blk · NAT $ 1vm snapshot take dev "before upgrade" snapshot a1c2 in 0.30 ms # APFS clone $ 1vm snapshot restore dev "before upgrade" --force restored in 0.41 ms $ 1vm reset dev --force # back to clean reset dev
Agents

A disposable machine your coding agent can drive.

1VM speaks MCP. Point Claude Code, Codex, Cursor or any other client at the local endpoint and it can create, run, snapshot and destroy machines on its own — inside a blast radius you set, on a token you can revoke.

off by default

Loopback only, and opt-in

The endpoint is off until you run 1vm mcp enable. It binds 127.0.0.1 and rejects any request whose Host header is not a loopback address. Nothing is exposed to your network.

four levels

Tokens that can't exceed their grant

Every token is minted at read, operate, create or destroy, and scoped to agent-owned machines or a named list. A read token cannot stop a VM; a create token cannot delete one.

audited

Every call is on the record

1vm mcp audit lists the recent tool calls with the token that made them. 1vm agent gc deletes the stopped machines an agent left behind.

outlives the client

Closing the editor doesn't kill the VM

1vm mcp serve proxies to the running app rather than owning the machines itself, so a long task survives the agent that started it.

1vm — a task in a machine that won't survive it
$ 1vm mcp enable listening http://127.0.0.1:7717 · loopback only $ 1vm mcp token create agent --level create --machines agent-owned token shown once · cannot delete your own machines $ 1vm mcp install-snippet claude-code wrote the client's own config form $ 1vm task run --from ubuntu-golden -- ./ci.sh clone → ready → exec → dispose snapshots before-task, after-task · machine gone

Twenty-four tools, from machines_list to snapshots_restore. Install snippets ship for Claude Code, Claude Desktop, Codex, Cursor, Gemini, opencode, Windsurf, Cline, VS Code, Grok — or generic HTTP and stdio. The automation docs have the whole surface.

Guests

ARM64 Linux and macOS, fully. Windows, honestly.

One backend — Apple's — for every guest type. What it does and doesn't do is the same on both front ends and on this page.

Linux

Verified

Any ARM64 EFI-bootable ISO. Verified end to end with Alpine 3.21: EFI → GRUB → kernel → login prompt. Nothing else to do.

  • virtio-gpu display & virtio-net
  • Rosetta for x86 userspace
  • Shared clipboard (spice-vdagent)
  • Shared folders over virtiofs

macOS

Apple images

Restore images come from Apple and install through the framework's own installer. Full graphics, suspend and resume, shared folders.

  • Native graphics device
  • Suspend & resume
  • Shared folders over virtiofs
  • · Two guests at a time (Apple's limit)

Windows on ARM

Limited

Boots to a desktop on the 1VM engine — our own Hypervisor.framework VMM, with no bundled hypervisor and no runtime download. Run 1vm guide windows first — the limits are real.

  • NVMe, xHCI & a TPM 2.0
  • Metal console & HDA audio
  • Net needs virtio-win
  • No accelerated 3D; not soaked
Stated before you download

What it can't do.

The ceiling is part of the product. Running 1vm capabilities prints this list for your exact Mac — here it is up front, not in a refund email.

!

Windows is limited, not supported

It installs and boots to a desktop on our own engine — NVMe, xHCI, a TPM, and ramfb so Setup is visible with no driver. But networking still needs virtio-win, there is no accelerated 3D, and it has not passed a 24-hour soak.

!

No x86 guests

ARM64 only, for every guest type. Rosetta translates userspace binaries inside a Linux guest; it does not boot an x86 kernel.

!

No USB device passthrough

Disk images can attach as USB mass storage; host hardware cannot pass through. Need a dongle in the guest? This isn't the tool.

!

Two macOS guests at a time

Apple's limit, enforced by the framework, not something this product can raise.

!

Bridged networking is gated

Apple grants the networking entitlement on request. Without it, bridging shows as unavailable rather than failing at boot.

!

Nested virtualization is narrow

M3 and later only, and feature-detected for your specific Mac rather than assumed.

The obvious objection

VMware Fusion is free. That's the best argument against this app.

Not a straw man — Fusion is genuinely free for commercial use, it is mature, and its Windows support is ahead of ours. If price is the whole question, the answer is Fusion and you can stop reading. Price isn't the whole question.

Taking a snapshot
24 GiB0< 1 ms
64 GiB0< 1 ms
256 GiB0< 1 ms
1 TiB0< 1 ms

A copy-based snapshot grows with the disk. A clone has no size to grow with — APFS shares the blocks until one side writes. The measured linked-clone figure is 0.30 ms; the column above is the part that matters, and it is a column of zeroes.

macOS guests

Fusion cannot run one

Broadcom documents ARM macOS guests as unsupported in Fusion on Apple silicon. If your job is testing an installer, an upgrade or a beta on a clean Mac, free does not fix that — no version of Fusion will do it.

behavior

Snapshots you actually take

A copy-based snapshot costs seconds and disk, so you ration them and skip the one before the risky step. A clone costs neither, so the decision disappears. That is a change in how you work, not a line on a feature list.

the download

Getting it is the product

Fusion ships through Broadcom's support portal: an account, an entitlement, an export-compliance review. Their own FAQ concedes it can be slow, and new users get no support contract. This app is a download and a drag to Applications.

dev.vm/ config.json the definition — commit it disk.asif primary disk, sparse efi-vars.bin EFI variables (Linux) snapshots/ index.json the snapshot tree a1c2/disk.asif clone of the disk a1c2/state.bin saved machine state console.log guest serial output run.json present only while running
How it's stored

A VM is a folder. Delete it to delete the VM.

Readable and editable

config.json is the whole definition. Edit it and the change applies at next boot. Put it in git if you like.

Nothing hidden

No central database, no registry. Archiving turns dev.vm into dev.vmarchive right beside it — still listed in the app.

Honest numbers

Figures that can't be known show as with the reason, never a fabricated percentage. One invented number would undermine every real one.

Free and Pro

The free tier is capped, not crippled.

There is no trial and no watermark. Free runs every guest on every engine at full speed — it just keeps two machines and runs one of them at a time. The CLI, SSH and the MCP endpoint are never capped, by count or by rate.

CapabilityFreePro
Machines in library2Unlimited
Concurrent runningOur limit, not Apple's.1Unlimited
Snapshots per machineThe automatic clean-install snapshot never counts.2Unlimited
Goldens and fleetscreate --from, linked-clone fleets.Included
Archive and reclaimPark a machine as a compressed bundle, get the space back.Included
CLI, SSH and MCPNever capped, by count or by rate.UnlimitedUnlimited
Guests, engines, speedNothing runs slower and nothing is watermarked on Free.AllAll

Spin one up. Throw it away.

One native app and one CLI, both signed for Virtualization.framework. No account and no bundled hypervisor. Anonymous usage counts are on by default and off in one click — machine names, paths, keys and addresses never leave your Mac.

Every release, checksum and signature on GitHub

macOS 26 or laterApple silicon onlyZero dependenciesOne-time, native