What a VM has
Use
vers info to see all of these for a given VM.
States
Running
CPU active, memory hot, reachable.
Paused
Memory preserved, CPU frozen. Resume with
vers resume.Stopped
Memory lost. Next start boots from disk.
vers pause / vers resume are fast and cheap — paused VMs keep their memory so you resume right where you left off. Use them aggressively to save cost when you step away.
The branching tree
This is the part that makes Vers different. Every VM belongs to a tree. The root is whatever you created withvers run or vers run-commit; every other node is a branch.
vers branch <vm>:
1
Parent pauses briefly
A few tens of milliseconds — short enough that interactive sessions barely notice.
2
Commit is created
The parent’s state (filesystem + memory) is frozen as a commit.
3
Child VM spawned
A new VM boots from that commit.
4
Parent resumes
Back to Running. The child runs in parallel, independent from now on.
5
Running processes continue
In the child, every process that was running on the parent keeps running — no boot, no re-init. This is what makes the branching feel instant.
vers branch <commit-id>) — no parent VM required, just a materialized snapshot.
Why this matters
- Parallel scenarios: Fork the same starting state N times to test N different paths.
- Cheap experimentation: Try risky things on a branch; throw it away if it goes wrong, parent untouched.
- Agent swarms: Give N agents identical copies of a golden environment in one second.
Parent / child relationships
- A parent can have many children. Fan-out is the common case.
- A child has exactly one parent (linear inheritance).
- Once a child exists, its parent can’t be deleted without
--recursive. Otherwise the child would be “orphaned” (still runnable, but with a dangling lineage).
vers info <vm> to see a VM’s parent; use vers kill -r <vm> to delete a VM and everything downstream.
Multiple VMs at the same time
There’s no limit to how many VMs you run in parallel. Each terminal session can attach to a different one — just pass the alias or id:vers status -q:
Sizing
Defaults (fromvers.toml):
Override per-run with flags:
vers resize.
See also
- Commits — how VM state is frozen and restored
- HEAD and aliases — how commands pick a default VM
- vers run, vers branch, vers kill
- Networking — the public hostname story