ZZettarack
VMXVM Xplore · hypervisor · in testing

Every machine on one screen.

A tiling TUI. KVM + ZFS, with just enough window manager. A workstation and a hypervisor in one machine: your desktop, your machines, microVMs and containers, and a system that rolls back.

A serious hypervisor for demanding operators: fifteen native cloud images from nine distributions, a golden image factory whose clones start in seconds, and snapshots and rollback on every machine.

And a new way to use one. There is no web browser between you and your machines: you use them, as desktops, woven into the hypervisor itself, with no heavy desktop environment under them and nothing to patch. A pure, raw hypervisor you sit at.

Get vmx
Fourteen machines' screens at once on one vmx, live: GNOME, KDE Plasma, Hyprland, awesome, XFCE and Sway desktops, a microVM, a text console, a Windows Server login and two Windows 11 desktops
capture · fourteen machines at once, one vmx
01 · upgradesYou can't brick it with an upgrade

Each release is a signed image, booted as a new environment beside the old one. If it doesn't come up healthy, the machine goes back by itself.

02 · goldensEvery clone is a new machine

Goldens are sealed on every path, so each clone boots with its own identity and keys and none of the builder's logins. The cloud images are the vendors' own, and every app is checked until it answers.

03 · isolationEvery container in its own VM

Each container and microVM runs in a Firecracker microVM of its own, jailed as its own user. A container that breaks out is still inside a VM, not on your host.

The lock screen: the Deep space scene, stars, shapes, a veil and a nebula, with the machine's name and the password prompt in the middle
the lock, Deep space
stop 1 · the desktopjewm

jewm: just enough window manager

Our own Wayland compositor, written in Rust. It owns the screen from the moment the machine boots, draws its own bar, menus and windows, and puts your machines right behind your work. No X11, and the whole of it is one 20 MB program. Four desktops at once, each a machine of its own: Windows for one job, a Linux for the next, whatever system, tool or app does it best.

jewm's New machine window open over the fly-through, the machine arch in front: the systems to start from, and the desktops one can be given
capture · New machine over the fly-through
A machine fills the screenKeys and pointer go straight to it, and the bar hides until you touch the top edge.
Eight menus, one key eachMachines, Create, Storage, Configure, Network, Reports, System and Power: Super and the lit letter.
Every action shows its planForms ask vmxd for the plan, run it as a job, show its log, and say what to do next if it fails.
Ten desktops1 to 4 for anything, 5 shown on all of them, a terminal multiplexer on 6, and 7 to 0 as pins that keep a machine on screen through every restart.
Hear the machine you seeThe machine on the screen plays its sound on the host; the others stay quiet.
Events on the barWhat went wrong while nobody was looking, counted on the bar and listed with what to do; pushed to ntfy, Gotify or Discord if you like.
Status on one keySuper+i for the host, its machines and the desktops. Super+/ puts every key on the screen.
Small on purposeRust and Wayland, no X11. The whole screen over RDP; light and dark modes.
Windows 11 in a machine, playing a video
windows
A GNOME desktop in a machine
gnome
CentOS Stream 10 with GNOME in a machine
centos-stream-10-desktop
Arch Linux with Hyprland in a machine
arch
stop 2 · flythe wall

Fly through your machines

Tap Super and every machine is a card with its name, CPUs, memory, state and its screen, live. Fly through them, switch to the wall to see every screen at once, and press Enter to go in, starting it if it's stopped. This website flies the way the desktop does.

Superfly-through↑ ↓flyTabthe wallEntergo in1–4put on a desktopSpaceits menuEscback
The wall: eleven machines' screens at once, three of them tagged, and the menu for the three
capture · the wall, eleven machines, three tagged and their menu
The fly-through: the machine arch in front with its name, CPUs, memory and state, Windows and CentOS Stream either side
the fly-through
stop 3 · trustplans

See every change before it runs

Each action is a plan: the exact steps, what each one is for, and what it destroys. Nothing is touched until you run it, a failed step undoes the ones before it, and the desktop asks Yes or No before it removes a machine.

plan · clone

Clone web-02 from debian-13

  1. check rpool is under 85% full before cloning web-02
  2. make the machine's dataset rpool/vms/<new id>
  3. clone rpool/vms/debian-13/root@golden as rpool/vms/<new id>/root: the disk, in an instant, sharing every block with its source until written
  4. write the seed the guest reads its name, its 1 login key(s) and that it asks DHCP for its address from
  5. define web-02 in libvirt: 2 cpus, 4096 MiB, UEFI with Secure Boot and a TPM 2.0, on the default network as <new MAC>
  6. write the machine's record
dry run:nothing was changed
plan · remove

Remove web-02

  1. ask web-02 to shut down, wait up to 1m30s, then stop it
  2. remove web-02 from libvirt, with its NVRAM
  3. destroy rpool/vms/7c1e94b2-5d0a-4f6e-9b3c-2e8a61f0d415 and every disk under it
  4. remove the seed, the TPM's state, the screen and serial sockets, and the record
destroys:rpool/vms/7c1e94b2-5d0a-4f6e-9b3c-2e8a61f0d415: 1 disk(s) and all data on them
remove web-02?
noyes
left: vmx clone debian-13 web-02 --ssh-key key.pub --memory 4G --dry-run, as printed on the bench · right: the same engine's wording for a removal, as the desktop asks
The Create window's Clone / Fleet form with Show plan pressed: five machines from a golden, and the plan for each, step by step, before anything runs
Show plan, on the desktop
stop 4 · undoexploded view

An upgrade you can undo

The system is three ZFS layers. An upgrade boots a new middle one; if it doesn't come up healthy, the machine goes back by itself, and going back by hand is one reboot. Your machines, your home folder and your settings never move. There is no such thing as a bricked apt or dnf upgrade here: no package manager ever runs on the appliance; the whole system is swapped for a new one, and the old ones stay: you can go back to any of the last five releases, any time, with a single reboot. Try to brick it with an upgrade: I bet you can't.

Signed image
read-only
Boot environment
new for each release
Your state
kept across them
zfs list, on the bench
# zfs list -o name,mountpoint NAME MOUNTPOINT rpool/IMAGES/vmx-0.49.70 - # signed, read-only rpool/IMAGES/vmx-0.49.71 - rpool/ROOT/vmx-0.49.70 / # the one before: a reboot back rpool/ROOT/vmx-0.49.71 / # running rpool/state /var/lib/zettarack # records, keys, settings rpool/home /home rpool/var/log /var/log rpool/vms none # every machine's disks
Settings, System: the boot environments on the bench, vmx-0.50.29 to the running vmx-0.51.6, and Boot next on each of the others
the boot environments, Boot next on any
stop 5 · comparedgame on

What the others do instead

Boot environments are a feature most hypervisors overlook: they bolt ZFS on as one storage choice among several, so the system itself never gets to stand on it. Zettarack runs on nothing but ZFS, built on it from the ground up, and a boot environment for every release is what that buys.

How that compares, on what matters when an upgrade goes wrong:

Zettarack vmxProxmox VETrueNAS
How an upgrade landsA new boot environment, cloned from a signed, read-only image. The running system is not touched.apt, in place, on the system you are running.A new boot environment on the boot pool.
The new system does not bootThe boot menu goes back to the one before by itself: a new one gets one try.Pick an older kernel at the boot menu, if one is still installed; otherwise a rescue ISO and a chroot, or reinstall the node and restore every machine from its backups.Pick the previous boot environment at the boot menu, by hand.
It boots, but is not healthyIts own health check, five minutes in, puts the machine back, and that release is never installed on its own again.Nothing automatic: you find out, and repair it.Nothing automatic: you activate the previous environment and reboot.
Going back on purposeOne command, one reboot, to any of the last five.Not supported: a ZFS snapshot of the root you took beforehand, rolled back from a live system.Activate an earlier environment, reboot.
Your machines and settingsOutside every boot environment, on datasets of their own: never moved, never rolled back with the system.The cluster configuration lives on the root filesystem, so a root rollback takes it along.Boot environments cover the boot pool only; pools and apps are separate.
The box itself is lostbootmass puts vmx on another box in minutes, from a stick or over the network; each machine comes back from its backup as it was.Reinstall the node, then restore every machine from its backups.Reinstall, upload the saved configuration, import the pools.
A package manager on the hostNone. Nothing is ever installed; an unlock exists, and marks the machine.apt, as on any Debian.apt, off by default.

Proxmox VE and TrueNAS are their owners' marks. What is said of them is from their own documentation and support forums, as of October 2026.

The Health window: each check named with what it found, ok or skipped with the reason, from the renderer to the pools
the health check
stop 6 · the consoledesktop 5

Every machine on one screen

Desktop 5 is the console: every machine with its state, size, address and where it came from, the chosen one's details beside it, and a key for every verb in the line under them. Mark several with Space and act on all of them at once. The same machines are on the wall, Super+Tab, every screen live, and in the fly-through, a tap of Super, one in front with its CPUs, memory and state and the rest either side.

The console on desktop 5: fourteen machines running, each with its state, CPUs, memory, address and source, the chosen machine's details beside them, and every verb with its key
capture · the console on desktop 5, fourteen machines
The wall: the same fourteen machines' screens at once, live: GNOME, KDE Plasma, Hyprland, awesome, XFCE and Sway desktops, a microVM, a text console, a Windows Server login and two Windows 11 desktops
the same machines on the wall
The fly-through: win11 in front, Windows 11 at its desktop, with its CPUs, memory and state, and the machines either side of it
and in the fly-through
stop 7 · the keyboardvmx-tui

Lightning fast, keyboard driven

The console is a TUI in a terminal: every machine, snapshot, network, microVM, card, app, golden and image, a tab each, and a key for every verb, named in the line under them.

The text console's machines: eleven machines and twenty-four templates, the chosen machine's details, and every verb with its key
machines
stop 8 · featuresmodules

Everything a machine needs

M-01Instant clones and fleets from golden templates
M-02Snapshots on a schedule, keeping the newest N
M-03Backups that send only what changed, encrypted ones as they are; restore as it was
M-04Add disks, grow disks, change CPUs and memory
M-05UEFI, Secure Boot and a TPM on every machine
M-06PCI and USB passthrough that refuses the GPU the host booted on, its pool's controller and NICs in use
M-07Firecracker microVMs, each jailed under its own user
M-08NAT, LAN bridges, VLANs, bonds, extra NICs, port forwards and a firewall per machine
M-09Start order and delay at boot; at shutdown, the reverse, every guest cleanly
M-10Reset a login through the guest agent; only a hash reaches the guest
M-11A UPS on USB or a NUT server: at low battery the machines go down in order, then the host
M-12Events for what went wrong unseen, on the bar and pushed to ntfy, Gotify, Discord or any JSON hook
M-13Containers from any registry, each in a microVM of its own, with volumes kept across restarts and ports led from the host
M-14Installs from a USB stick or over the network in minutes: ZFS on root, Secure Boot with its own signed boot chain, an encrypted root pool if you choose
M-15A doctor that names what is wrong and what to do; a health check where a test that did not run counts as failed, never as passed
M-16One daemon behind the desktop, the text console and the vmx command, with an audit line for every change asked of it
M-17Each machine's screen, sound and clipboard on your desktop; text crosses into a machine only when you paste
M-18A reconciler that finds ghost machines, orphan datasets and machines libvirt was given behind its back, and removes one by its typed name
The text console's apps, each with what it is
apps
stop 9 · loadimages

Native cloud image VMs, simple and fast

Fifteen cloud images, the vendors' own, fetched and checked against their published digests; ten goldens built, proven and sealed for you (server and GNOME desktop on five distributions), Windows 11 and Server 2025 unattended from Microsoft's own ISO (10 and Server 2022 from their installer, the drivers alongside), and apps that are checked until they answer.

Debian 13 · 12Ubuntu 24.04 · 22.04Fedora 44 Rocky 10 · 9AlmaLinux 10 · 9CentOS Stream 10 · 9 openSUSE Leap 15.6 · TumbleweedAmazon Linux 2023Arch Windows 11 · Server 2025
DNS blockingMedia serverFile syncLAMPWeb stackRDP desktopVDI desktopTV serverInternet radioSDRSeedbox
New machine: the systems to start from by family, Windows' installers, and the desktops a machine can be given
New machine: a system to start from, and a desktop for it
The text console's cloud images, each with where it comes from and who signs it
images
stop 10 · workflowsmall on purpose

Small, and every action a key away

jewm is 20 MB, written in Rust: the compositor, the bar, menus and windows, the fly-through and the wall, the lock and the screensaver, and the VNC server that shows the whole screen anywhere. No X11, and no desktop under it. Built from the ground up to be small, light and simple.

Every key on the screenSuper+/ shows them all; the bar lights each menu's letter.
Keys where yours areSystem > Keyboard changes any of them, and keys go by their place on the keyboard, QWERTZ or Cyrillic alike.
Mouse or notFocus on a click or under the pointer; Alt+Tab reaches every window and machine, minimised ones too.
Light or darkEither palette, kept across restarts.
The keyboard aloneDesktop 6 is every machine in a terminal, a key for every verb.
Asked before it is lostEvery change shows its plan first; removing asks Yes or No.
AlmaLinux 9 with KDE Plasma, full screen as desktop 1: the machine is the desktop, with only the bar above it
a machine as desktop 1
The bar's Machines menu over a running Hyprland machine: every machine with its controls beside it, and the microVMs and containers below
the Machines menu
stop 11 · in practiceone line each

Things you will actually do

Real commands, as typed on the bench; the desktop does the same from its menus, and shows the plan first.

A machine, in a tenth of a secondvmx clone debian-13 web1 --ssh-key ~/.ssh/id_ed25519.pubA ZFS clone: it shares every block until it writes, and runs 1.2 s after start.
Before you break itvmx snapshot web1 before-upgrade
vmx rollback web1 before-upgrade
An instant to go back to, disks and all.
Every hour, keeping a dayvmx schedule web1 --every 1h --keep 24Snapshots that take and prune themselves.
A copy somewhere elsevmx backup web1 --to tank/backups
vmx restore web1 --from tank/backups
The first sends the machine, the rest only what changed; restore puts it back as it was.
A desktop, logged invmx build desk1 --base debian-13 --desktop kdeKDE on Debian, its user logged in on its screen.
Windows, unattendedvmx windows win11 --edition 11 --login opsFrom Microsoft's ISO, virtio drivers during setup, TPM and Secure Boot on.
An app, checked until it answersvmx build media --recipe jellyfinBuilt from a recipe and asked until it serves.
A GPU for one machinevmx pci give media1 0a:00.0 0a:00.1The card and its audio, the whole IOMMU group; the boot GPU is refused.
A container, in a microVM of its ownvmx container run docker.io/library/nginx:alpine web --port 8080:80 --volume web:/usr/share/nginx/htmlFrom any registry, a volume kept, a port from the host. No Docker on the host.
The text console with five machines marked, the chosen one's details beside them
five marked
stop 12 · from the benchas typed

Straight from the bench

The clone from the last stop, as a vmx printed it: six steps, a tenth of a second, and a disk of 8 KB against 435 MB shared.

as typed on the bench, 2026-10-16
# vmx clone debian-13 web1 --ssh-key /root/.ssh/id_ed25519.pub Clone web1 from debian-13 [1/6] pool.room [2/6] machine.dataset [3/6] machine.disk.root [4/6] machine.seed [5/6] machine.define [6/6] machine.record Clone web1 from debian-13: done, 6 steps # 119 ms # zfs list -o name,used,refer rpool/vms/17836b92-8d07-44a7-9406-074bfdb484aa/root NAME USED REFER rpool/vms/17836b92-8d07-44a7-9406-074bfdb484aa/root 8K 435M # 435 MB shared, 8 KB its own
A fixed addressvmx clone debian-13 db1 --address 10.0.0.20/24 --gateway 10.0.0.1 --dns 10.0.0.1Written into the seed the guest reads at first boot.
Start with the host, in ordervmx power db1 on --order 1
vmx power web1 on --order 2 --delay 20
The database first, the web machine twenty seconds later; at shutdown the reverse.
Leave whenever you likevmx export debian-13 --format qcow2qcow2, raw, vmdk, vhd, vhdx, vdi or ova, read back once written.
See it before it runsvmx remove web1 --dry-runEvery change takes --dry-run: the steps and what they destroy, nothing touched.
The wall on the bench: eleven machines running at once, each with its screen, live
eleven machines on the bench
stop 13 · arriveget vmx

Get one on your desk

Download

x86-64 · UEFI · one file for a USB stick or a disc · installs with no network

LTS · kernel 6.12 · OpenZFS 2.3 · fixes only

vmx 0.54.0 · 891 MB

Beta · kernel 7.2 · OpenZFS 2.4 · the new line, proven on the bench first

vmx 0.57.0 · 1.0 GB

Verify

Each release comes with SHA256SUMS (beta's), its signature by the release key, and the key itself.

LTS sha256 faa4952ed88dad0a26ac95a3488931904fca102fd9da92aafb754d358834396b

beta sha256 9e23bf3d0dde6b822e3b983cbb313b48a427404f7d38f046caf18383c888e38e

openssl pkeyutl -verify -pubin \
  -inkey release.pem -rawin \
  -in SHA256SUMS -sigfile SHA256SUMS.sig
sha256sum -c SHA256SUMS --ignore-missing

Write to USB

sudo dd if=zettarack-vmx-0.54.0.iso of=/dev/sdX \
  bs=4M status=progress conv=fsync

On Windows, use Rufus in DD mode or balenaEtcher.

You'll need

  • UEFI firmware
  • Intel VT-x or AMD-V turned on
  • A disk of 8 GiB or more for the system, and memory for your machines
  • With Secure Boot on: confirm the certificates once in MokManager on the first boot; the password is vmx
zettarack.com · website designed by North Star