Route management

CommandDescription
gvu add <vanity-path> <repo-url>Add a new vanity URL route
gvu listList 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

FlagDescription
--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.mod must 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

CommandDescription
gvu auth signupCreate 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 logoutClear local credentials
gvu auth whoamiShow 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

CommandDescription
gvu subscribeSubscribe to Pro Plan (interactive flow)

gvu subscribe

Upgrades your account to Pro with an interactive payment flow:

  1. Choose billing period (monthly or yearly)
  2. QR codes are displayed for all supported payment methods
  3. Select your payment channel (WeChat Pay, Alipay, or PayPal)
  4. 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

CommandDescription
gvu donateShow donation QR codes (WeChat Pay, Alipay, PayPal)
gvu issueOpen a GitHub issue
gvu --versionShow version

Global flags

FlagShortDescription
--json-jStructured JSON output
--yes-ySkip confirmation prompts
--version-vShow 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

PlatformHTTPSSSHSelf-hosted
GitHubYesYes
GitLabYesYesYes
BitbucketYesYes
CodebergYesYes
CustomYesYesYes

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. gvu only sends your email and an OTP to the service — your access token stays on your machine.