Reuse a prepared
build or test environment.
A pipeline could restore a VM with its tools and dependencies ready, fork copies for parallel tests, or try a deployment change from a known working state.
Run your applications and runtimes inside the VM. zeo5 lets you snapshot live state, restore it, and fork independent copies—with copy-on-write memory and disk reducing duplication.
20 ms wake-up at 1 GiB · 30 ms at 2 GiB · Live forks in milliseconds
A running VM can fork from the guest.
Illustrative workflowSelect a branch · choose the checkpoint to roll back
Wake a 1 GiB VM
Wake a 2 GiB VM
Fork a live virtual machine
Snapshot wake timings with a warm VMM. Workload and host affect results. Measurement notes
Your software. Your use case.
zeo5 provides VM snapshot, restore and fork capabilities. You choose what runs inside and how to use them. Here are a few possibilities.
A pipeline could restore a VM with its tools and dependencies ready, fork copies for parallel tests, or try a deployment change from a known working state.
For example, you could prepare a VM with Python loaded and waiting for code. A client could then send a script or test and start executing it in milliseconds, without starting a new interpreter each time.
Your application could request a fork from inside its VM to try alternative steps. Checkpoint progress, fork those branches again, or restore an earlier state to retry.
An agent could use the same VM capabilities to branch a workspace, explore different approaches, and continue from the state it chooses.
How it works
service.py
service = load_application()
service.run()
working state, ready to saveCapture a running VM’s memory, disk and process state. Keep its tools, working configuration and progress as a starting point you can resume or branch from.
“Try the change in a branch.”
Fork requested from inside the guestSame state. Independent execution.
Create independent copies of a running VM in milliseconds. Forks can also be requested from inside the guest. Each copy inherits the starting state and can become the parent of further forks.
Try the branching exampleResume the state you choose, fork it again, or roll back to an earlier snapshot. Every branch stays connected to its origin in a Git-like tree. A 1 GiB VM wakes in 20 ms; a 2 GiB VM in 30 ms.
Fork a fork. Roll back. Repeat.Built underneath every branch
Copy-on-write memory and disk.
A separate kernel for every VM.
Branches share their starting memory and disk state, then store their own changes. Copy-on-write reduces duplication compared with making a full copy of every VM.
KVM · hardware isolation
Each VM runs its own kernel under KVM, with hardware isolation between virtual machines.
Hardware-accelerated GPU VMs
Snapshot a GPU-enabled VM and resume hardware-accelerated rendering in its forks. The recorded demo shows OpenGL on NVIDIA hardware.
See current GPU support
Less idle infrastructure
An environment can stay available without staying active. Share the starting state across branches, keep their changes, and suspend VMs while there is no work to do.
Copy-on-write lets branches share clean memory pages. Each branch holds its own changes, reducing the memory needed compared with a full independent copy for every environment.
Snapshots and forks share their disk ancestry and store changed blocks. Keep multiple environments and checkpoints without duplicating a complete disk for each one.
Suspend an environment while it waits for an API response, a human answer or its next request. Restore its saved state when work arrives, instead of keeping the VM running through the wait.
Your application or orchestrator receives the event and wakes the VM. Snapshots still use storage, and warm pools have overhead. Actual cost savings depend on shared state, idle time, workload and how your infrastructure is billed.
See measured memory and disk usageA natural fit
With engines such as Restate and Temporal, your workflow tracks the steps. zeo5 could preserve the machine behind them—ready to resume, branch or wait.
Save the VM after a completed step. A worker could restore that checkpoint for a retry, with its runtime, files and in-memory progress already in place.
Fork a prepared environment for parallel work or competing approaches. Keep the chosen branch’s checkpoint and release the others, sharing unchanged memory and disk.
Suspend the workload VM and release its active resources while waiting for a timer, response or human approval. Its state stays on disk, using no CPU or guest RAM while parked. When the event arrives, a worker could wake it and continue.
Saved snapshots use disk; the host’s warm pool retains a small memory overhead. A potential integration through your worker or service code. The engine keeps its journal and retry logic; zeo5 keeps VM checkpoints. Your integration coordinates the two and handles external side effects safely.
What it does
Wake a saved environment, branch a live machine, and keep only what changes. These measurements show what that means in time, memory and disk.
Measured on one 8-vCPU host in September 2026. Wake timings use an already-running VMM. Results depend on the host, workload and configuration; these are measurements, not performance guarantees. GPU restore timings are reported separately below.
A parked VM is a snapshot; waking it to a serving process takes 17–25 ms for a 1 GiB VM and 29–35 ms at 2 GiB. The pool keeps the VMM already running, so a wake is a restore, not a boot.
The parent pauses for 0.3 ms plus a sparse diff seal, 15–30 ms in all, and keeps running. One snapshot is then woken N times in parallel: three children are all ready 50–100 ms after the call, the fastest burst in 46 ms. Three wakes racing on one host contend for a moment; alone, a child is ready in ~25 ms.
The guest itself asks to fork over a control channel, and the call returns twice: once in the parent, once in each child, with its index. Your application can branch its own running environment.
Every fork is a branch. A branch is a rename plus a sparse diff of memory and disk against its parent, so lineage is a tree, not a line; it has been nine levels deep in a single run.
A child holds only the pages and blocks it changed: 3 MB of memory delta for a fresh child, 90 MB for one that loaded a whole toolchain. Nothing is copied up front.
Clean pages are served from one shared copy. A woken 1 GiB VM costs about 20 MB at rest, and eight clones of one base share pages down to ~6 MB each in shared-base mode.
Images are hole-punched: a 1 GiB memory image is 90 MB on disk and a 1 GiB root filesystem is 186 MB. Diffs are as small as what changed.
A deep chain can be flattened into a fresh root in about 8 s, restoring depth-0 wake times without losing the state.
A VM gets hardware OpenGL through a per-slot renderer on the host: 0.4 s from a parked snapshot to an awake VM with its GPU state back (0.9 s until Chrome, with its own 1 s restore timer, renders on the card), and a fork keeps it, the clone awake in 0.5–0.6 s with no context lost. The same page ran 28× faster than in a VM without one.
Every VM is a Firecracker microVM under KVM with its own kernel, its own network namespace, and a seccomp filter on the VMM.
A parked slot is 3.4 MB of RSS and costs no CPU. A thousand warm slots fit in 2.5 GB; the address plan allows 16,384 per host.
A finished VM is just a snapshot. Type into it and it wakes in ~25 ms, runs your command, and is released again. Its uptime continues from where it was frozen.
Each resume steps the clock to the host, reseeds the kernel RNG, and gives the clone a new boot id and machine id, so forks are not indistinguishable twins.
Read-only data mounts with DAX straight out of host page cache: one copy for every clone and nothing of it in the snapshot.
Every run is a workspace: its events, every console, its states. View it later, replay it at any speed, or delete it and free its VMs and states.
GPU measurements: GTX 1080 Ti · NVIDIA 550 driver · OpenGL through VirGL. Current GPU support
One example: AI environments
A recorded run. Real virtual machines.
Follow the branches, compare their work, and continue with the winner.
A little more detail
You choose the applications, runtimes and tools in your guest environment. zeo5 provides the VM snapshot, restore and fork capabilities. Prepared Python runtimes, CI/CD pipelines, workflows and AI environments are examples of how you could use them.
20 ms for a 1 GiB VM and 30 ms for a 2 GiB VM describe snapshot wake-ups with an already-running VMM. These are benchmark figures, not cold-boot times or performance guarantees. Host, workload and configuration affect results. The interactive example is a concept demonstration, not a timed benchmark.
Yes. A fork can be requested from inside the guest. Your guest application can branch its own environment while preserving the starting state.
Memory and disk use copy-on-write. Branches share their original state and keep their own changes. Each VM has its own kernel under KVM.
The recorded GPU path supports hardware-accelerated OpenGL on NVIDIA hardware, including snapshot and fork resume. Vulkan, compute, video and resource reservations are not part of this demonstrated path. The shared GPU path is not intended for hostile tenants.
The VM’s saved memory and disk state are restored. External connections and services may need to reconnect. We can walk through what this means for your workload in a live demo.
Your application. Your workflow. Your next branch.