Named repositories that group related commits with their own per-repo tags — a scope above plain tags.
A repository is a named scope for commits and their tags. Where vers tag gives you a flat global namespace, vers repo lets you group related commits (e.g. a whole application) with tags scoped to that group (my-app:latest, my-app:v1.2).Repos can be public or private. Public repos can be forked by other organizations, which is how you share base images.
Tags scoped to a single repository. Same verbs as top-level vers tag, but qualified by --repo.
vers repo tag create my-app latest <commit-id>vers repo tag list my-appvers repo tag get my-app latestvers repo tag update my-app latest --commit <new-commit>vers repo tag delete my-app preview
Flat, org-wide namespace. Best for a handful of long-lived names (production, staging) that don’t belong to any one application.
Repos + repo tags
Structured namespace. Best for versioned artifacts where the same tag name (latest, v1) is meaningful across many different things (my-api:latest, my-worker:latest).
# Build and tagvers build -t my-ubuntu:v1 .# Promote the commit into a repository and make it publicCOMMIT=$(vers tag get my-ubuntu:v1 --format json | jq -r '.commit_id')vers repo create my-ubuntu -d "Ubuntu 22.04 + our dev tools"vers repo tag create my-ubuntu v1 "$COMMIT"vers repo visibility my-ubuntu --public