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/)
Environments
An environment is your virtual machine setup. When you runvers run, Vers creates an environment 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 Stopped
- SSH Access: Connect via
vers connect
Aliases
Aliases are human-readable names for VMs, stored locally on your machine.Setting Aliases
Create aliases when starting or branching VMs:Using Aliases
Use aliases anywhere you’d use a VM ID:Viewing Aliases
Storage
Aliases are stored locally at~/.vers/aliases.json:
Aliases are local only - they don’t sync between machines. They’re a convenience feature to avoid typing long VM IDs.
HEAD
HEAD is a reference (pointer) to a VM. It represents your current working context.Checking HEAD
Moving HEAD
Usevers checkout to move HEAD to a different VM:
Why HEAD Matters
Many commands operate on HEAD by default when you don’t specify a VM ID:| Command | With HEAD | Without HEAD |
|---|---|---|
vers connect | Connects to HEAD VM | Must specify VM ID |
vers kill | Deletes HEAD VM | Must specify VM ID |
vers branch | Branches from HEAD | Must specify VM ID |
vers commit | Commits HEAD VM | Must specify VM ID |
vers pause | Pauses HEAD VM | Must specify VM ID |
vers resume | Resumes HEAD VM | Must specify VM ID |
vers execute | Runs on HEAD VM | Must specify VM ID |
vers copy | Copies to/from HEAD | Must specify VM ID |
Branching VMs
Create a new VM from an existing VM’s state or from a commit:- Parent pauses: The parent VM is briefly paused to create a consistent snapshot
- Commit created: A snapshot of the parent VM’s state is saved
- Child VM spawned: A new VM is created from that commit
- Parent resumes: The parent VM automatically resumes
- Both run simultaneously: Both parent and child VMs end up running
- Running processes continue exactly where they left off in the child VM
Commits and Snapshots
Creating a Commit
vers commit creates a snapshot of a VM’s current state:
When you commit, the VM is paused automatically. If you want to keep working with it, run
vers resume afterward.Restoring from a Commit
Usevers run-commit to create a new VM from a commit:
Commit Workflow Example
Branch Relationships
Vers maintains parent-child relationships between VMs:- Parents can have multiple children (branch multiple times from one VM)
- Each child has exactly one parent (linear inheritance)
- Deleting requires handling children first (use
vers kill -rfor recursive delete)
Working with Multiple VMs
You can work in multiple VMs simultaneously using different terminal sessions:Configuration
vers.toml
Your project configuration:.vers Directory
API Key Storage
Your API key is stored at~/.versrc. View it with:
Next Steps
Now that you understand the core concepts:- Follow the quickstart guide
- Learn about VM access and SSH
- Explore CLI commands