1--- 2section: using-npm 3title: registry 4description: The JavaScript Package Registry 5--- 6 7# registry(7) 8 9## The JavaScript Package Registry 10 11### Description 12 13To resolve packages by name and version, npm talks to a registry website 14that implements the CommonJS Package Registry specification for reading 15package info. 16 17npm is configured to use npm, Inc.'s public registry at 18<https://registry.npmjs.org> by default. Use of the npm public registry is 19subject to terms of use available at <https://www.npmjs.com/policies/terms>. 20 21You can configure npm to use any compatible registry you like, and even run 22your own registry. Use of someone else's registry may be governed by their 23terms of use. 24 25npm's package registry implementation supports several 26write APIs as well, to allow for publishing packages and managing user 27account information. 28 29The npm public registry is powered by a CouchDB database, 30of which there is a public mirror at 31<https://skimdb.npmjs.com/registry>. The code for the couchapp is 32available at <https://github.com/npm/npm-registry-couchapp>. 33 34The registry URL used is determined by the scope of the package (see 35[`scope`](/using-npm/scope). If no scope is specified, the default registry is used, which is 36supplied by the `registry` config parameter. See [`npm config`](/cli-commands/npm-config), 37[`npmrc`](/configuring-npm/npmrc), and [`config`](/using-npm/config) for more on managing npm's configuration. 38 39### Does npm send any information about me back to the registry? 40 41Yes. 42 43When making requests of the registry npm adds two headers with information 44about your environment: 45 46* `Npm-Scope` – If your project is scoped, this header will contain its 47 scope. In the future npm hopes to build registry features that use this 48 information to allow you to customize your experience for your 49 organization. 50* `Npm-In-CI` – Set to "true" if npm believes this install is running in a 51 continuous integration environment, "false" otherwise. This is detected by 52 looking for the following environment variables: `CI`, `TDDIUM`, 53 `JENKINS_URL`, `bamboo.buildKey`. If you'd like to learn more you may find 54 the [original PR](https://github.com/npm/npm-registry-client/pull/129) 55 interesting. 56 This is used to gather better metrics on how npm is used by humans, versus 57 build farms. 58 59The npm registry does not try to correlate the information in these headers 60with any authenticated accounts that may be used in the same requests. 61 62### Can I run my own private registry? 63 64Yes! 65 66The easiest way is to replicate the couch database, and use the same (or 67similar) design doc to implement the APIs. 68 69If you set up continuous replication from the official CouchDB, and then 70set your internal CouchDB as the registry config, then you'll be able 71to read any published packages, in addition to your private ones, and by 72default will only publish internally. 73 74If you then want to publish a package for the whole world to see, you can 75simply override the `--registry` option for that `publish` command. 76 77### I don't want my package published in the official registry. It's private. 78 79Set `"private": true` in your package.json to prevent it from being 80published at all, or 81`"publishConfig":{"registry":"http://my-internal-registry.local"}` 82to force it to be published only to your internal registry. 83 84See [`package.json`](/configuring-npm/package-json) for more info on what goes in the package.json file. 85 86### Will you replicate from my registry into the public one? 87 88No. If you want things to be public, then publish them into the public 89registry using npm. What little security there is would be for nought 90otherwise. 91 92### Do I have to use couchdb to build a registry that npm can talk to? 93 94No, but it's way easier. Basically, yes, you do, or you have to 95effectively implement the entire CouchDB API anyway. 96 97### Is there a website or something to see package docs and such? 98 99Yes, head over to <https://www.npmjs.com/> 100 101### See also 102 103* [npm config](/cli-commands/npm-config) 104* [config](/using-npm/config) 105* [npmrc](/configuring-npm/npmrc) 106* [npm developers](/using-npm/developers) 107* [npm disputes](/using-npm/disputes) 108