Verdaccio is a free, open source Node.js registry that you run yourself. Publish your private packages, cache the public ones and keep using pnpm, npm or yarn. Built for local development, ready to host for your whole team.
Latest release6.xv6.10.5Oct 3, 2026Release notes →Most people start on their own machine: test a publish, reproduce a CI run, try a package manager. When you need to share it, the same configuration runs as a hosted registry for your team.
No database to start: Verdaccio ships with its own small one. It proxies registries like npmjs.org, caches what you download, and plugs into storage such as Amazon S3 or Google Cloud Storage when you outgrow the disk.
Keep your code private and keep using your package manager the way you already do. Scoped, access-controlled, yours.
Chain several registries and fetch everything from one endpoint. One URL in every .npmrc.
Cut install latency in CI and keep limited failover when the public registry has a bad day.
Need a patched third-party dependency? Publish your fix under the same name, locally.
Verdaccio ships with a web interface. Search your packages, read their README, copy the install command for your package manager and check versions, tags and dependencies, without leaving the browser.
$ pnpm add @verdaccio/uiVerdaccio is open source software. Read the code, run it anywhere, fork it, fix it. Everything happens in public on GitHub: the registry, its plugins, the Docker image and this website.
Point your package manager at Verdaccio and keep every command you already know.
$pnpm config set registry http://localhost:4873/storage: ./storage auth: htpasswd: file: ./htpasswd uplinks: npmjs: url: https://registry.npmjs.org/ packages: '@*/*': access: $all publish: $authenticated proxy: npmjs '**': access: $all proxy: npmjs
Authentication, storage, middleware, the web interface and package filters can all be swapped or extended. Use one from the community or write your own.
Decide who can log in and publish.
Keep packages on S3, Google Cloud or your own backend.
Add endpoints, metrics and hooks to the registry.
Replace or restyle the web interface.
Hide or block versions before they are served.
Start a registry without the command line. runServer hands you a Node server that is not listening yet, so you choose the port and when to stop it. Ideal for end-to-end tests, embedded registries and tooling.
import { runServer } from 'verdaccio'; import { ConfigBuilder } from '@verdaccio/config'; const config = ConfigBuilder.build() .addStorage('./storage') .addAuth({ htpasswd: { file: './htpasswd' } }) .addUplink('npmjs', { url: 'https://registry.npmjs.org/' }) .addPackageAccess('**', { access: '$all', proxy: 'npmjs' }) .getConfig(); const app = await runServer(config); const server = app.listen(4873); // you pick the port // ...publish, install, assert... server.close(); // and when to stop
An official Docker image and a Helm chart for Kubernetes, maintained alongside the core.
The Verdaccio repository has runnable examples, including a local storage volume, nginx and Apache reverse proxies, S3 storage and GitHub OAuth.
Our sponsors provide the tools and free services that keep Verdaccio running, and contributors give their time. Want to be part of it?
Become a sponsor