Quick Start
Sign Up
To publish packages to the vlt registry, you first have to sign up.
-
Create your account
You can sign up with Github, Google (Gmail) or with an email and password.
-
Verify your email
If you signed up with an email and password, check your inbox for a one-time passcode (OTP). Paste it into the verification view to confirm your account.
-
Set up your account
Caution The slug appears in your registry URLs and in your package scope, so choose carefully.
-
You’ve signed up! You’ll be logged into the Dashboard.
Log in
-
Enter your credentials
Log in with your email address, or continue with Github or Google. You can also use a passkey if you’ve set one up.
Set up your package manager
Once you have an account, connect the package manager you already use
to your registries. The examples below use acme as the account slug
— replace it with your own, or open the dashboard’s Setup page
(under Packages), which generates these instructions for your account.
-
Set up the vlt.io npm mirror
Change your default registry to your vlt.io mirror. This updates your
vlt.jsonfile to use the mirror for all packages in the current project:Terminal window vlt config set registry=https://registry.vlt.io/acme/npm/Then log in to obtain an authentication token:
Terminal window vlt loginThen reinstall your dependencies from the vlt.io mirror:
Terminal window vlt install -
Set up your private
@acmescopeYour private scope lives in a separate registry. To set it up in
vlt.json, run:Terminal window vlt config set scoped-registries=@acme=https://registry.vlt.io/acme/main/Then obtain an authentication token for your private scope:
Terminal window vlt login --registry=https://registry.vlt.io/acme/main/Now you can publish and install packages from your private
@acmescope.
-
Set up the vlt.io npm mirror
Change your default registry to your vlt.io mirror. This updates your
.npmrcfile to use the mirror for all npm packages in the current project:Terminal window npm config set registry https://registry.vlt.io/acme/npm/ --location=projectThen log in to obtain an authentication token:
Terminal window npm login --registry=https://registry.vlt.io/acme/main/Then to switch all your dependencies to the vlt.io mirror, delete your
package-lock.jsonandnode_modulesfolder and reinstall:Terminal window rm -rf package-lock.json node_modulesnpm install -
Set up your private
@acmescopeYour private scope lives in a separate registry. To set it up in
.npmrc, run:Terminal window npm config set @acme:registry https://registry.vlt.io/acme/main/ --location=projectThen obtain an authentication token for your private scope:
Terminal window npm login --registry=https://registry.vlt.io/acme/main/ --scope=@acmeNow you can publish and install packages from your private
@acmescope.
-
Set up the vlt.io npm mirror
Change your default registry to your vlt.io mirror. This updates your
.npmrcfile to use the mirror for all npm packages in the current project:Terminal window pnpm config set registry https://registry.vlt.io/acme/npm/ --location=projectThen log in to obtain an authentication token:
Terminal window pnpm loginThen to switch all your dependencies to the vlt.io mirror, delete your
pnpm-lock.yamlandnode_modulesfolder and reinstall:Terminal window rm -rf pnpm-lock.yaml node_modulespnpm install -
Set up your private
@acmescopeYour private scope lives in a separate registry. To set it up in
.npmrc, run:Terminal window pnpm config set @acme:registry https://registry.vlt.io/acme/main/ --location=projectThen obtain an authentication token for your private scope:
Terminal window pnpm login --registry=https://registry.vlt.io/acme/main/ --scope=@acmeNow you can publish and install packages from your private
@acmescope.
These instructions are for yarn 2+ (“Berry”), the version you get from
yarn set version berry or a packageManager field in
package.json.
-
Set up the vlt.io npm mirror
Change your default registry to your vlt.io mirror. This updates your project’s
.yarnrc.ymlfile to use the mirror for all npm packages:Terminal window yarn config set npmRegistryServer "https://registry.vlt.io/acme/npm/"Then log in to obtain an authentication token:
Terminal window yarn npm login --web-login --always-authThen to switch all your dependencies to the vlt.io mirror, delete your
yarn.lockand reinstall:Terminal window rm -rf yarn.lockyarn install -
Set up your private
@acmescopeYour private scope lives in a separate registry. To set it up in
.yarnrc.yml, run:Terminal window yarn config set npmScopes.acme.npmRegistryServer "https://registry.vlt.io/acme/main/"yarn config set npmScopes.acme.npmPublishRegistry "https://registry.vlt.io/acme/main/"Then obtain an authentication token for your private scope:
Terminal window yarn npm login --scope acme --always-auth --web-loginNow you can publish and install packages from your private
@acmescope.
-
Get a token
To authenticate Bun with your registries, first create an authentication token from your account’s Tokens page and define an environment variable. If you’re using a
.envfile, define the token there:VLT_TOKEN=<your token>You can also add it to your
.bashrcor.zshrc, or export it in your current shell for the duration of your session:Terminal window export VLT_TOKEN=<your token> -
Set up the vlt.io npm mirror
Create (or edit)
bunfig.tomlin your project root and point the default registry at your vlt.io mirror. Use a$VLT_TOKENplaceholder for the token instead of a literal value — bun expands$VARreferences from the environment at request time, so this file is safe to commit:[install]registry = { url = "https://registry.vlt.io/acme/npm/", token = "$VLT_TOKEN" }Then to switch all your dependencies to the vlt.io mirror, delete your
bun.lockandnode_modulesfolder and reinstall:Terminal window rm -rf bun.lock node_modulesbun install -
Set up your private
@acmescopeYour private scope lives in a separate registry. Add it under
[install.scopes]inbunfig.toml. vlt.io tokens are scoped to your account rather than to a specific registry, so the same$VLT_TOKENworks here too:[install.scopes.acme]url = "https://registry.vlt.io/acme/main/"token = "$VLT_TOKEN"Now you can publish and install packages from your private
@acmescope —bun publishresolves the registry from the package name’s scope automatically.
-
Set up the vlt.io npm mirror
Create (or edit)
.npmrcin your project root and point the default registry at your vlt.io mirror. Reference the token via${VLT_TOKEN}rather than a literal value — deno expands${VAR}references in.npmrcfrom the environment, so this file is safe to commit:Terminal window cat >> .npmrc <<'EOF'registry=https://registry.vlt.io/acme/npm///registry.vlt.io/acme/npm/:_authToken=${VLT_TOKEN}EOFSince there’s no
deno login, create a token from the vlt.io dashboard instead, then put it in a.envfile (make sure.envis in your.gitignore):Terminal window echo "VLT_TOKEN=<your token>" >> .envThen to switch all your dependencies to the vlt.io mirror, delete your
deno.lockandnode_modulesfolder and reinstall, passing--env-fileso the token in.envis loaded:Terminal window rm -rf deno.lock node_modulesdeno install --env-file -
Set up your private
@acmescopeYour private scope lives in a separate registry. Add a scope mapping and a matching auth-token line — the token line’s host/path must exactly match the scope’s registry URL:
Terminal window cat >> .npmrc <<'EOF'@acme:registry=https://registry.vlt.io/acme/main///registry.vlt.io/acme/main/:_authToken=${VLT_TOKEN}EOFvlt.io tokens are scoped to your account rather than to a specific registry, so the same
VLT_TOKENworks here too. Now you can install packages from your private@acmescope withdeno install --env-file.Note that deno will not let you publish into npm registries, so you will need an alternative tool to publish your private packages in this scope.