---
title: npm packages
description: Publish and install npm packages with Cuitty Registry.
section: Registry
order: 3
updatedAt: 2026-06-09
slug: registry/npm
---
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.

## Configure npm

```bash
npm config set @acme:registry https://registry.example.com/npm/
npm login --registry https://registry.example.com/npm/
```

Publish and install with the same endpoint:

```bash
npm publish --registry https://registry.example.com/npm/
npm install @acme/button --registry https://registry.example.com/npm/
```

## Scope policy

For 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.

`publishConfig.access = "public"` does not make a package public by itself. Registry records the package as private until an authorized user changes visibility.

## Failure modes

- `404` can be intentional for private packages when the caller lacks read permission.
- `403` means the caller can authenticate but lacks publish, install, or admin permission.
- Scope mismatch errors mean the package name does not match the target Registry namespace.