Command-line interface for VergeOS
Project description
Verge CLI
Command-line interface for VergeOS — manage virtual machines, networks, DNS, firewall rules, and more from your terminal.
Installation
pipx (recommended)
pipx install vrg
pip
pip install vrg
uv
uv tool install vrg
Homebrew
brew install verge-io/tap/vrg
Standalone binary
Download a pre-built binary from the latest release and place it in your PATH. Available for Linux (x86_64), macOS (ARM64), and Windows (x86_64).
macOS note: You may need to remove the quarantine attribute:
xattr -d com.apple.quarantine ./vrg
Verify
vrg --version
Quick Start
# 1. Configure credentials
vrg configure setup
# 2. Verify connection
vrg system info
# 3. List your VMs
vrg vm list
Highlights
- 200+ commands across compute, networking, tenants, NAS, identity, automation, and monitoring
- Declarative VM templates — provision from
.vrg.yamlfiles with variables, dry-run, and batch support - Flexible auth — interactive setup via
vrg configure, bearer token, API key, or username/password with named profiles - Flexible output — table, wide, JSON, or CSV with
--queryfield extraction - Shell completion — tab completion for bash, zsh, fish, and PowerShell
Commands
vrg <domain> [sub-domain] <action> [options]
| Domain | Commands |
|---|---|
| Compute | vm, vm drive, vm nic, vm device, vm snapshot |
| Networking | network, network rule, network dns, network host, network alias, network diag |
| Tenants | tenant, tenant node, tenant storage, tenant net, tenant snapshot, tenant stats, tenant share, tenant logs |
| NAS | nas service, nas volume, nas cifs, nas nfs, nas user, nas sync, nas files |
| Infrastructure | cluster, node, storage |
| Snapshots | snapshot, snapshot profile |
| Sites & Replication | site, site sync outgoing, site sync incoming |
| Identity & Access | user, group, permission, api-key, auth-source |
| Certificates & SSO | certificate, oidc |
| Automation | task, task schedule, task trigger, task event, task script |
| Recipes | recipe, recipe section, recipe question, recipe instance, recipe log |
| Catalog | catalog, catalog repo |
| Updates | update, update source, update branch, update package, update available |
| Monitoring | alarm, alarm history, log |
| Tagging | tag, tag category, resource-group |
| System | system, configure, file, completion |
Most commands follow a consistent CRUD pattern (list, get, create, update, delete). Destructive operations require --yes to skip confirmation.
Run vrg <command> --help for usage details, or see the full Command Reference.
Configuration
Configuration is stored in ~/.vrg/config.toml. Run vrg configure setup for interactive setup, or set environment variables (VERGE_HOST, VERGE_TOKEN, etc.) to override. Multiple named profiles are supported.
See the Cookbook for setup recipes and the Command Reference for all environment variables.
VM Templates
Create VMs from declarative .vrg.yaml files instead of long command lines. Templates support variables, dry-run previews, runtime overrides (--set), cloud-init, and batch provisioning.
vrg vm create -f web-server.vrg.yaml --dry-run # Preview
vrg vm create -f web-server.vrg.yaml # Create
See the Template Guide for the full field reference and examples.
Output Formats
All commands support --output table|wide|json|csv and --query for field extraction. See the Command Reference.
Shell Completion
Tab completion is available for bash, zsh, fish, and PowerShell. Run vrg --install-completion for quick setup, or see the Cookbook for manual configuration.
Global Options
| Option | Short | Description |
|---|---|---|
--profile |
-p |
Configuration profile to use |
--host |
-H |
VergeOS host URL (override) |
--output |
-o |
Output format (table, wide, json, csv) |
--query |
Extract field using dot notation | |
--verbose |
-v |
Increase verbosity (-v, -vv, -vvv) |
--quiet |
-q |
Suppress non-essential output |
--no-color |
Disable colored output | |
--version |
-V |
Show version |
--help |
Show help |
Exit Codes
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | General error |
| 2 | Invalid arguments |
| 3 | Configuration error |
| 4 | Authentication error |
| 5 | Permission denied |
| 6 | Resource not found |
| 7 | Conflict (e.g., duplicate name) |
| 8 | Validation error |
| 9 | Timeout |
| 10 | Connection error |
Contributing
We welcome contributions! Please read the following before submitting a pull request.
git clone https://github.com/verge-io/vrg.git
cd vrg
uv sync --all-extras
uv run pytest # Tests
uv run ruff check . # Lint
uv run mypy src/verge_cli # Type check
By submitting a pull request, you agree to the terms of our Contributor License Agreement.
- Follow the existing code style and conventions
- Add tests for new functionality
- Keep pull requests focused — one feature or fix per PR
- Use conventional commit messages
Documentation
- Command Reference — Full command reference
- Template Guide — Template language reference
- Cookbook — Task-oriented recipes
- Architecture — Design patterns and internals
- Known Issues — Current limitations and workarounds
License
Apache License 2.0 — see LICENSE for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vrg-1.0.0.tar.gz.
File metadata
- Download URL: vrg-1.0.0.tar.gz
- Upload date:
- Size: 334.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d1b6349b10eba943ed7d0fc5db048419059699c1a704875b366781641a2f94e2
|
|
| MD5 |
0e3e13de2ca6bed2d8edd1c131f910d4
|
|
| BLAKE2b-256 |
5b6abb33bf654dc7de0fd07f3105f132cce2b9db2f336495932f1589629afb09
|
Provenance
The following attestation bundles were made for vrg-1.0.0.tar.gz:
Publisher:
pypi.yaml on verge-io/vrg
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vrg-1.0.0.tar.gz -
Subject digest:
d1b6349b10eba943ed7d0fc5db048419059699c1a704875b366781641a2f94e2 - Sigstore transparency entry: 972533674
- Sigstore integration time:
-
Permalink:
verge-io/vrg@042e309a6580057021c7a9941fb848e5d7620fa9 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/verge-io
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yaml@042e309a6580057021c7a9941fb848e5d7620fa9 -
Trigger Event:
push
-
Statement type:
File details
Details for the file vrg-1.0.0-py3-none-any.whl.
File metadata
- Download URL: vrg-1.0.0-py3-none-any.whl
- Upload date:
- Size: 210.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ae701201747049f689a7d7bb4975f3a05a80e2d185da71f535fb53daed147ed
|
|
| MD5 |
f0485f30c36863026dd078da957b6883
|
|
| BLAKE2b-256 |
c7fc577ff184a6905fedf2b8bd85d49bd7a1aefeceddc53bbd778425290ac10c
|
Provenance
The following attestation bundles were made for vrg-1.0.0-py3-none-any.whl:
Publisher:
pypi.yaml on verge-io/vrg
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vrg-1.0.0-py3-none-any.whl -
Subject digest:
4ae701201747049f689a7d7bb4975f3a05a80e2d185da71f535fb53daed147ed - Sigstore transparency entry: 972533681
- Sigstore integration time:
-
Permalink:
verge-io/vrg@042e309a6580057021c7a9941fb848e5d7620fa9 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/verge-io
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yaml@042e309a6580057021c7a9941fb848e5d7620fa9 -
Trigger Event:
push
-
Statement type: