Quickstart
This page configures a single package manager to install through Upwarden. Pick your ecosystem; the wire shape is the same for every ecosystem — the proxy speaks each registry’s native protocol, so the install commands and lockfile shapes are unchanged from a direct-to-registry install.
Prerequisites
Section titled “Prerequisites”You have:
- A project API key (
vk_...) minted under your tenant. If you don’t, ask your Upwarden admin — or see Installation to stand up your own instance and Create your first key to mint one. - The proxy hostname for your ecosystem. The default convention is
<eco>.pkg.<your-domain>(for examplenpm.pkg.upwarden.iofor the Upwarden-hosted instance).
npm / Bun / pnpm / Yarn
Section titled “npm / Bun / pnpm / Yarn”registry=https://npm.pkg.upwarden.io///npm.pkg.upwarden.io/:_authToken=${VG_NPM_API_KEY}Then install as normal:
npm install lodash@4.17.21A successful install through Upwarden reads identically to a direct npm install. To confirm you’re going through the proxy: npm config get registry.
PyPI (pip, uv)
Section titled “PyPI (pip, uv)”# pip.conf[global]index-url = https://${VG_PYPI_API_KEY}@pypi.pkg.upwarden.io/simple/pip install requests==2.31.0crates.io (Cargo)
Section titled “crates.io (Cargo)”[source.crates-io]replace-with = "upwarden"
[source.upwarden]registry = "sparse+https://crates.pkg.upwarden.io/index/"
[registries.upwarden]token = "${VG_CRATES_API_KEY}"RubyGems
Section titled “RubyGems”bundle config --global https://rubygems.pkg.upwarden.io \ "${VG_RUBYGEMS_API_KEY}:x"# Gemfilesource "https://rubygems.pkg.upwarden.io" do gem "rake", "13.0.6"endNuGet (.NET)
Section titled “NuGet (.NET)”<!-- NuGet.Config --><configuration> <packageSources> <add key="upwarden" value="https://nuget.pkg.upwarden.io/v3/index.json" protocolVersion="3" /> </packageSources> <packageSourceCredentials> <upwarden> <add key="Username" value="ci" /> <add key="ClearTextPassword" value="${VG_NUGET_API_KEY}" /> </upwarden> </packageSourceCredentials></configuration>Maven Central
Section titled “Maven Central”<mirror> <id>upwarden</id> <url>https://maven.pkg.upwarden.io/maven2</url> <mirrorOf>central</mirrorOf></mirror><server> <id>upwarden</id> <username>ci</username> <password>${env.VG_MAVEN_API_KEY}</password></server>Go modules
Section titled “Go modules”export GOPROXY="https://go.pkg.upwarden.io,direct"The bearer rides in the Authorization: Bearer ${VG_GO_API_KEY} header via a ~/.netrc entry or a Git URL rewrite.
What happens behind the scenes
Section titled “What happens behind the scenes”Each install request hits the proxy, which authenticates the bearer to a tenant + project, runs Upwarden’s verdict pipeline against the requested artefact, fetches it from the upstream registry on the SAFE path, and streams the bytes back. BLOCKED and QUARANTINED verdicts surface as a policy-shaped error response that the package manager’s normal install flow already knows how to print.
See Concepts → tenants, projects, keys for the model your CI integrates with.