{
  "slug": "registry/npm",
  "title": "npm packages",
  "description": "Publish and install npm packages with Cuitty Registry.",
  "url": "https://cuitty.com/docs/registry/npm",
  "markdown_url": "https://cuitty.com/docs/registry/npm.md",
  "json_url": "https://cuitty.com/docs/registry/npm.json",
  "frontmatter": {
    "title": "npm packages",
    "description": "Publish and install npm packages with Cuitty Registry.",
    "order": 3,
    "section": "Registry",
    "updatedAt": "2026-06-09"
  },
  "headings": [
    {
      "depth": 2,
      "slug": "configure-npm",
      "text": "Configure npm"
    },
    {
      "depth": 2,
      "slug": "scope-policy",
      "text": "Scope policy"
    },
    {
      "depth": 2,
      "slug": "failure-modes",
      "text": "Failure modes"
    }
  ],
  "body_markdown": "Cuitty Registry supports npm-compatible metadata, publish, install, and tarball download flows. Scoped package names should map to a Registry namespace or an approved namespace alias.\n\n## Configure npm\n\n```bash\nnpm config set @acme:registry https://registry.example.com/npm/\nnpm login --registry https://registry.example.com/npm/\n```\n\nPublish and install with the same endpoint:\n\n```bash\nnpm publish --registry https://registry.example.com/npm/\nnpm install @acme/button --registry https://registry.example.com/npm/\n```\n\n## Scope policy\n\nFor scoped packages, the npm scope must match the owning Registry namespace unless an operator has configured an alias. For example, `@acme/button` publishes under the `acme` namespace and requires publish permission on that namespace or package.\n\n`publishConfig.access = \"public\"` does not make a package public by itself. Registry records the package as private until an authorized user changes visibility.\n\n## Failure modes\n\n- `404` can be intentional for private packages when the caller lacks read permission.\n- `403` means the caller can authenticate but lacks publish, install, or admin permission.\n- Scope mismatch errors mean the package name does not match the target Registry namespace.",
  "links_out": []
}