A VM in Vers is a full Firecracker microVM with its own kernel, filesystem, memory, and network. It’s not a container, not a sandbox wrapper — it’s a Linux machine you can SSH into. Every interaction with Vers ultimately comes down to operating on VMs: you create them, branch them, freeze them as commits, and eventually delete them.Documentation Index
Fetch the complete documentation index at: https://docs.vers.sh/llms.txt
Use this file to discover all available pages before exploring further.
What a VM has
| Thing | Description |
|---|---|
| ID | Auto-generated (vm-abc123). The canonical handle. |
| State | Running, Paused, Stopped. Transitions via pause / resume / kill. |
| Resources | Memory (MiB), vCPUs, disk (MiB). Set at creation. Disk can grow with vers resize. |
| Networking | Internal IP; public hostname at {vm-id}.vm.vers.sh. |
| Parent | The VM or commit this one was created from (empty for root VMs). |
| Alias | Optional local human-readable name. |
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>:
Parent pauses briefly
A few tens of milliseconds — short enough that interactive sessions barely notice.
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):
| Option | Default |
|---|---|
mem_size_mib | 512 |
vcpu_count | 1 |
fs_size_vm_mib | 1024 |
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