Your private Node.js registry.In one command.
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.
- Startone command, no config
- Publisha private package
- Installprivate and public ones
One registry in front of everything you install.
- Private packages are published to your registry and served from your own storage.
- Public packages are fetched once from npmjs.org, an uplink, and kept in the cache.
- Every next install comes from the cache: faster, and still available when the public registry has a bad day.
Built for local development. Ready to host as your registry.
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.
Local development
- Test publishes and installs before they reach a real registry
- Run end-to-end tests against real package managers
- Zero config, no database, one command to start
- Cached packages install without touching the network
Hosted registry
- Host it on your own server, with one URL for your team and CI runners
- Authentication with htpasswd or your own plugin
- Storage on Amazon S3, Google Cloud Storage or a plugin of your own
- Run it anywhere: official Docker image and Helm chart for Kubernetes
A registry that stays out of your way.
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.
Private packages
Keep your code private and keep using your package manager the way you already do. Scoped, access-controlled, yours.
Link registries
Chain several registries and fetch everything from one endpoint. One URL in every .npmrc.
Cache npmjs.org
Cut install latency in CI and keep limited failover when the public registry has a bad day.
Override public packages
Need a patched third-party dependency? Publish your fix under the same name, locally.
Browse what you publish.
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.
- Search and browse the packages in your registry
- README, versions, tags, dependencies and uplinks for every package
- Install commands for pnpm, npm and yarn, ready to copy
- Login, dark mode and translations; your access rules apply to it too
- @verdaccio/uiv2.4.0Components of the web interface
- @verdaccio/corev1.12.3Shared types and utilities
- @verdaccio/configv0.9.1Configuration loader and builder
- @verdaccio/loggerv3.0.0Structured logging for the registry
@verdaccio/ui v2.4.0
$ pnpm add @verdaccio/uiFree, MIT licensed and built in the open.
Verdaccio 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.
- MIT licensed. Use it at work and in commercial projects.
- Public source. Registry, plugins, Docker image and docs live on GitHub.
- Built by contributors. Issues, pull requests and plugins are welcome from anyone. Meet the contributors.
- Community supported. Sponsors share the tools and services that keep it running. Become a sponsor.
pnpm, npm, Yarn. One line to switch.
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
Verdaccio does the basics. Plugins do the rest.
Authentication, storage, middleware, the web interface and package filters can all be swapped or extended. Use one from the community or write your own.
Authentication
Decide who can log in and publish.
Storage
Keep packages on S3, Google Cloud or your own backend.
Middleware
Add endpoints, metrics and hooks to the registry.
Theme UI
Replace or restyle the web interface.
Filters
Hide or block versions before they are served.
Run Verdaccio from your own code.
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.
- Typed configuration with ConfigBuilder, no YAML to keep in sync
- A fresh storage per run, so nothing leaks between tests
- Works with the same config you would use in production
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
Ship it where you ship everything else.
An official Docker image and a Helm chart for Kubernetes, maintained alongside the core.
Docker
Kubernetes · Helm
The Verdaccio repository has runnable examples, including a local storage volume, nginx and Apache reverse proxies, S3 storage and GitHub OAuth.
Powered by people and companies who share what they have.
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
Vendure
SheetJS
Docker
BrowserStack