CLI Installation
Install
All releases are served from the Catalyst Networks Downloads portal. The snippets below query the downloads API for the latest release matching your platform and architecture.
set -euo pipefailBASE="https://downloads.catalystnetworks.io"
case "$(uname -s)" in Linux) PLATFORM=linux ;; Darwin) PLATFORM=darwin ;; *) echo "unsupported OS: $(uname -s)" >&2; exit 1 ;;esaccase "$(uname -m)" in x86_64|amd64) ARCH=amd64 ;; aarch64|arm64) ARCH=arm64 ;; *) echo "unsupported arch: $(uname -m)" >&2; exit 1 ;;esac
URL=$(curl -fsSL "$BASE/api/v1/products/catalyst-manager" | python3 -c "import sys, jsond = json.load(sys.stdin)m = [r for r in d['releases'] if r['is_latest'] and r['platform']=='$PLATFORM' and r['arch']=='$ARCH']if not m: sys.exit('no release for $PLATFORM/$ARCH')print('$BASE' + m[0]['download_url'])")
TMP=$(mktemp -d) && trap 'rm -rf "$TMP"' EXITcurl -fsSL "$URL" | tar -xz -C "$TMP"sudo install -m 0755 "$TMP/catalyst-manager-$PLATFORM-$ARCH" /usr/local/bin/cvpn-managercvpn-manager version$base = "https://downloads.catalystnetworks.io"$arch = if ($env:PROCESSOR_ARCHITECTURE -eq "ARM64") { "arm64" } else { "amd64" }
$product = Invoke-RestMethod "$base/api/v1/products/catalyst-manager"$rel = $product.releases | Where-Object { $_.is_latest -and $_.platform -eq "windows" -and $_.arch -eq $arch } | Select-Object -First 1if (-not $rel) { throw "no windows/$arch release found" }
$tmp = New-Item -ItemType Directory -Path "$env:TEMP\catalyst-$([guid]::NewGuid())"$zip = Join-Path $tmp $rel.filenameInvoke-WebRequest "$base$($rel.download_url)" -OutFile $zipExpand-Archive -Path $zip -DestinationPath $tmp
$dest = "$env:LOCALAPPDATA\Programs\catalyst-manager"New-Item -ItemType Directory -Path $dest -Force | Out-NullMove-Item "$tmp\catalyst-manager-windows-$arch.exe" "$dest\cvpn-manager.exe" -ForceRemove-Item -Recurse -Force $tmp
# Add $dest to PATH for the current user (new shells will pick it up)$userPath = [Environment]::GetEnvironmentVariable("Path", "User")if ($userPath -notlike "*$dest*") { [Environment]::SetEnvironmentVariable("Path", "$userPath;$dest", "User")}& "$dest\cvpn-manager.exe" versionRequires Go 1.23 or later.
git clone https://github.com/dot-billy/catalyst_networks_go_app.gitcd catalyst_networks_go_appgo build -ldflags "-X main.Version=$(git describe --tags --always)" ./cmd/catalyst-setupsudo mv catalyst-setup /usr/local/bin/cvpn-managerPrefer to grab a tarball by hand? Browse downloads.catalystnetworks.io/downloads/catalyst-manager for every published version with checksums.
Verify
cvpn-manager versionNebula
You do not need to install Nebula separately. The CLI automatically downloads and installs the correct Nebula binary for your platform during cvpn-manager register. You can also manage it manually:
# Check if Nebula is installedcvpn-manager nebula check
# Install the latest versioncvpn-manager nebula install
# Update an existing installationcvpn-manager nebula updateRequirements
- Root/sudo access is required to install system services, write to the config directory, and install the Nebula binary.
- Network access to the control plane API and GitHub (for Nebula downloads).