Skip to main content

vers up

Build a rootfs image and start a Vers development environment according to the configuration in vers.toml.

Usage

vers up [cluster]                    # Build (if needed) and start environment  
vers up --mem-size 1024              # Override memory configuration
vers up --rootfs custom-name         # Override rootfs name

Options

OptionDescription
--mem-sizeOverride memory size (MiB)
--vcpu-countOverride number of virtual CPUs
--rootfsOverride rootfs name
--kernelOverride kernel name

Examples

Build and start with defaults

vers up
=== Building rootfs image ===
Creating rootfs archive...
Successfully built rootfs: my-app

=== Starting development environment ===
Sending request to start cluster...
Cluster (ID: cluster-abc123) started successfully with root vm 'vm-def456'.
HEAD now points to: vm-def456

Skip build phase

# With builder.name = "none" in vers.toml
vers up
=== Starting development environment ===
Sending request to start cluster...
Cluster (ID: cluster-xyz789) started successfully with root vm 'vm-abc123'.
HEAD now points to: vm-abc123

With custom settings

vers up --mem-size 2048 --vcpu-count 4
=== Building rootfs image ===
Creating rootfs archive...
Successfully built rootfs: my-app

=== Starting development environment ===
Sending request to start cluster...
Cluster (ID: cluster-def456) started successfully with root vm 'vm-ghi789'.
HEAD now points to: vm-ghi789

How it works

The up command follows a two-phase process:

Phase 1: Build (conditional)

  • Checks builder configuration: If builder.name is not “none”, proceeds with build
  • Builds rootfs: Creates rootfs image according to configuration
  • Skips if disabled: When builder.name = "none", jumps directly to startup

Phase 2: Start environment

  • Loads configuration: Reads settings from vers.toml
  • Applies overrides: Uses command-line flags to override configuration
  • Starts cluster: Creates new cluster with specified settings
  • Updates HEAD: Points local HEAD to the new root VM

Configuration control

Build enabled

[builder]
name = "docker"        # or other builder
dockerfile = "Dockerfile"

[rootfs]
name = "my-custom-app" # Custom rootfs name
Result: Builds custom rootfs, then starts cluster.

Build disabled

[builder]
name = "none"          # Explicitly disable building

[rootfs]
name = "default"       # Use default image
Result: Skips build phase, starts cluster with default rootfs.

Error handling

Build phase errors

vers up
=== Building rootfs image ===
Error: build failed: Dockerfile not found

Configuration errors

vers up
Error: failed to load configuration: vers.toml not found
Solution: Run vers init first.

Startup errors

vers up
=== Building rootfs image ===
Successfully built rootfs: my-app

=== Starting development environment ===
Error: run failed: insufficient resources

Use cases

Full development startup

# Complete workflow: build custom environment and start
vers up
# Build phase creates your custom rootfs
# Start phase launches your development cluster
vers connect

Quick default environment

# Fast startup with default images (no build)
# Set builder.name = "none" in vers.toml
vers up
# Skips build, uses default rootfs

Resource-specific development

# Override resources for specific workloads
vers up --mem-size 4096 --vcpu-count 8
# Still builds custom rootfs if configured

Project initialization

# First time project setup
vers init
vers up
# Creates configuration, builds environment, ready to work

vs. other commands

vers up vs. vers run

  • up: Builds first (if configured), then starts cluster
  • run: Only starts cluster, no building

vers up vs. vers build

  • up: Builds (if needed) + starts environment
  • build: Only builds rootfs, doesn’t start anything

Prerequisites

  • Project initialized with vers init
  • Valid vers.toml configuration file
  • For building: Dockerfile (if builder.name is not “none”)
  • Network connectivity
  • Sufficient resources for cluster creation

See Also