To resolve packages by name and version, npm talks to a registry website that implements the JavaScript CommonJS Package Registry specification for reading package info like software and metadata. Additionally, npm's package registry implementation supports several write APIs as well, to allow for publishing packages and managing user account information. Open source developers and developers at companies use the npm registry to contribute packages to the entire community or members of their organizations, and download packages to use in their own projects. The official public npm registry is at https://registry.npmjs.org/. It is powered by a CouchDB database, of which there is a public mirror at https://skimdb.npmjs.com/registry. The code for the couchapp is available here.
If you try to publish your own packages, by default npm will publish them the public registry. This can be overridden by specifying a different default registry or