Projects
A project is your working directory containing:vers.toml- Configuration file defining VM specifications.vers/- Directory storing branch references and metadata (similar to.git/)
Clusters
A cluster is your virtual machine environment. When you runvers up, Vers creates a cluster based on your vers.toml configuration, including:
- Root filesystem (rootfs)
- Memory allocation
- CPU configuration
- Network setup
Virtual Machines (VMs)
VMs are the actual running environments where your work happens. Each VM has:- Unique ID: Auto-generated identifier (e.g.,
vm-abc123) - State: Running, Paused, or Not Started
- IP Address: For network access
- SSH Access: Connect via
vers connect
Branches
Branches are named pointers to specific VMs, similar to Git branches. They provide:- Human-readable names instead of VM IDs
- Current context tracking via HEAD
- History management through the reference system
HEAD
HEAD represents your current working context - which branch (and therefore which VM) you’re currently “on”. HEAD can point to:- A branch reference:
ref: refs/heads/main(normal state) - A VM directly:
vm-abc123(detached HEAD state)
State Inheritance
When you create a branch, complete state inheritance occurs:- Parent VM pauses automatically
- Child VM inherits both filesystem and memory state
- Running processes continue in the child EXACTLY where they left off
Branch Relationships
Vers maintains parent-child relationships between VMs:- Parents can have multiple children (multiple branches from one point)
- Each child has exactly one parent (linear inheritance)
- Deleting requires no children (
vers killonly works on leaf nodes)
Working with Multiple Branches
You can work in multiple branches simultaneously by using different terminal sessions:Configuration Files
vers.toml
Your project configuration defining:.vers Directory Structure
Next Steps
Now that you understand the core concepts, you’re ready to:- Create your first project!
- Learn CLI commands
- Explore parallel testing workflows