The npm registry
An npm-compatible package registry scoped to your organisation.
Every organisation gets a package registry that speaks the npm protocol. npm, pnpm, yarn, and bun all work against it unchanged; Plain is just the server side.
Scopes
Packages are scoped to your organisation's slug: @<org>/<package>. The scope is the namespace and the permission boundary; publishing into it requires membership or a token scoped to the organisation.
Public and private packages
Packages are public or private per package. Public packages install without authentication and get a public page. Private packages require a token to read and are part of the paid plans; see Plans and limits.
Installing
Point your package manager's scope at the registry. In the project's .npmrc:
@<org>:registry=https://alpha.plain.jxd.dev/api/registry/
//alpha.plain.jxd.dev/api/registry/:_authToken=plain_rt_xxxxxxxx
The _authToken line is only needed for private packages and publishing. pln token create prints exactly this block for you. Then:
pnpm add @<org>/<package>
Public package pages
Every public package has a browsable page, no sign-in required:
https://alpha.plain.jxd.dev/p/<org>/<package>
The page shows the README, versions, dist-tags, and install command. Private packages never appear there, and the URL space does not reveal whether an unlisted name exists.