Route management
| Command | Description |
|---|---|
gvu add <vanity-path> <repo-url> | Add a new vanity URL route |
gvu list | List all your registered routes |
gvu remove <route-id> [...] | Remove one or more routes |
gvu add
The hosting platform is auto-detected from the repo URL.
Flags
| Flag | Description |
|---|---|
--subdir <path> | Subdirectory within the repo where go.mod lives (Go 1.25+). Use * for subdir wildcard (Pro only). Omit for single-module repos. |
Examples
# ── gomod.io routes (default domain, all users) ──
# GitHub
gvu add gomod.io/mylib https://github.com/myorg/mylib.git
gvu add gomod.io/mylib ssh://git@github.com:myorg/mylib.git
# GitLab
gvu add gomod.io/mylib https://gitlab.com/myorg/mylib.git
gvu add gomod.io/mylib ssh://git@gitlab.com:myorg/mylib.git
# Bitbucket
gvu add gomod.io/mylib https://user@bitbucket.org/myorg/mylib.git
gvu add gomod.io/mylib ssh://git@bitbucket.org:myorg/mylib.git
# Codeberg
gvu add gomod.io/mylib https://codeberg.org/myorg/mylib.git
gvu add gomod.io/mylib ssh://git@codeberg.org:myorg/mylib.git
# Self-hosted GitLab (custom port)
gvu add gomod.io/mylib http://gitlab.example.com/group/mylib.git
gvu add gomod.io/mylib ssh://git@gitlab.example.com:2222/group/mylib.git
# ── Monorepo (Go 1.25+, --subdir) ──
# go.mod at go/module-a/go.mod inside the repo
gvu add gomod.io/module-a https://github.com/myorg/monorepo.git --subdir go/module-a
gvu add gomod.io/module-b https://github.com/myorg/monorepo.git --subdir go/module-b
# ── Custom domain routes (Verified/Pro only) ──
gvu add go.mycompany.com/mylib https://github.com/myorg/mylib.git
gvu add go.mycompany.com/mylib ssh://git@gitlab.com:myorg/mylib.git
# ── Wildcard routes (Pro + custom domain only) ──
# Repo wildcard — cover all repos under a GitHub org
gvu add 'go.mycorp.com/dept1/*' 'https://github.com/dept1/*.git'
# Subdir wildcard — cover all subdirs in a monorepo
gvu add go.mycorp.com/dept1/mono https://github.com/dept1/mono.git '--subdir=*'
Note: Wildcard routes require a Pro account and a custom domain. Repo wildcard and subdir wildcard are mutually exclusive per route. See Wildcard Routing for full details.
Custom domain prerequisite: Configure the DNS CNAME record before running
gvu add. The server verifies the CNAME during route creation. See Custom Domains for setup steps.
Pro domain binding: Pro users get exclusive domain binding — once you add a route under a custom domain, only you can add routes under that domain.
Remember: After adding a vanity URL, your module’s
go.modmust use the vanity path as the module path (e.g.,module gomod.io/mylib), not the original hosting URL (e.g.,github.com/myorg/mylib).
gvu list
Lists all your registered routes. Wildcard routes are marked with [W1] or [W2]:
$ gvu list
[1] m_abc123 gomod.io/mylib [exact]
[2] m_def456 go.mycorp.com/dept1/* [W1]
[3] m_ghi789 go.mycorp.com/dept1/mono [W2]
gvu remove
Supports bulk deletion:
gvu remove m_abc123 # single
gvu remove m_abc123 m_def456 # multiple
gvu remove m_abc123 m_def456 -y # skip confirmation
# Remove a wildcard route
gvu remove m_def456 # removes the W1 wildcard rule
Authentication
| Command | Description |
|---|---|
gvu auth signup | Create an anonymous account |
gvu auth bind <email> | Bind email, upgrade to Verified |
gvu auth login <email> | Login on a new device via email OTP |
gvu auth logout | Clear local credentials |
gvu auth whoami | Show current account info and quota |
gvu auth whoami
Displays your account details including plan, quota, and access token.
Example — Pro user:
$ gvu auth whoami
User ID: usr_abc123
Plan: PRO
Pro Expires: 2027-06-24T00:00:00Z (365 days remaining)
Email Status: Verified (user@example.com)
Access Token: gvu_a1b2...c3d4 (expires 2026-07-25)
Route Quota: 12 / 50 used (38 slots remaining)
When your Pro subscription has 7 days or fewer remaining, a warning is displayed next to the expiry date.
Subscription
| Command | Description |
|---|---|
gvu subscribe | Subscribe to Pro Plan (interactive flow) |
gvu subscribe
Upgrades your account to Pro with an interactive payment flow:
- Choose billing period (monthly or yearly)
- QR codes are displayed for all supported payment methods
- Select your payment channel (WeChat Pay, Alipay, or PayPal)
- Enter the last 4 characters of your transaction ID
After submission, an admin verifies your payment and activates your Pro subscription.
See Pricing for details on plans and payment methods.
Other commands
| Command | Description |
|---|---|
gvu donate | Show donation QR codes (WeChat Pay, Alipay, PayPal) |
gvu issue | Open a GitHub issue |
gvu --version | Show version |
Global flags
| Flag | Short | Description |
|---|---|---|
--json | -j | Structured JSON output |
--yes | -y | Skip confirmation prompts |
--version | -v | Show version |
JSON output
All commands support --json:
$ gvu list --json
{
"status": "success",
"data": {
"routes": [
{
"id": "m_abc123",
"vanity_path": "gomod.io/private-module",
"target_repo": "https://github.com/myorg/private-module.git",
"repo_type": "github",
"route_type": "exact"
},
{
"id": "m_def456",
"vanity_path": "gomod.io/module-a",
"target_repo": "https://github.com/myorg/monorepo.git",
"repo_type": "github",
"subdir": "go/module-a",
"route_type": "exact"
},
{
"id": "m_ghi789",
"vanity_path": "go.mycorp.com/dept1/*",
"target_repo": "https://github.com/dept1/*.git",
"repo_type": "github",
"route_type": "wildcard_repo"
}
]
}
}
Supported Git platforms
| Platform | HTTPS | SSH | Self-hosted |
|---|---|---|---|
| GitHub | Yes | Yes | — |
| GitLab | Yes | Yes | Yes |
| Bitbucket | Yes | Yes | — |
| Codeberg | Yes | Yes | — |
| Custom | Yes | Yes | Yes |
Configuration
Credentials (access token, email, plan info) are stored in ~/.config/gvu/config.yaml, created automatically on first use.
Privacy note: The server never stores your Git credentials, SSH keys, or repo passwords.
gvuonly sends your email and an OTP to the service — your access token stays on your machine.