PackagePass

PackagePass docs

Everything you need to publish and distribute private TypeScript packages.

PackagePass has two surfaces: an npm-compatible registry for installs and a control plane for package metadata, access grants, install tokens, audit events, previews, and release automation.

Control API

https://api.preview.packagepass.dev/v1

Registry URL

https://registry.preview.packagepass.dev/npm/

Start here

Choose the path that matches your job.

The CLI is best for local publishing and setup. The TypeScript SDK is best when package distribution is part of your product or release automation. The API reference documents the underlying control plane.

The core workflow

  1. 1

    Create a tenant, scope, and package

    A tenant owns the registry namespace. A scope maps packages such as @acme/payments to PackagePass's registry URL.
  2. 2

    Publish a tarball

    The CLI validates package.json, runs npm pack, uploads the artifact, and moves the chosen dist-tag.
  3. 3

    Grant access

    A subject receives explicit actions such as package:install or package:publish on a tenant, package, or package version.
  4. 4

    Mint a token and configure installs

    Generate .npmrc or bunfig.toml config for the package manager and use a scoped install token at install time.

Key concepts

These terms show up in the CLI, SDK, API, policy decisions, registry requests, and audit events.

TermMeaning
TenantThe account boundary for packages, subjects, tokens, grants, and audit events.
ScopeAn npm scope such as @acme. Install config maps the scope to PackagePass's registry URL.
PackageA private scoped npm package record, for example @acme/payments. Install access is controlled by PackagePass grants.
VersionA published package artifact. Versions can be active, deprecated, or yanked.
PreviewA temporary package version published to a channel-backed dist-tag such as preview-pr-482.
SubjectThe actor that receives access: user, group, agent, or customer. Agents cover AI workers, services, and CI jobs.
GrantA policy record that allows actions on a tenant, scope, package, or package version.
TokenA scoped credential minted for API automation, package installs, or CI exchange.

What PackagePass validates before publishing

Scoped package names

Package names must be scoped, for example @acme/payments.

Semver versions

Published versions must be semver-compatible and match the uploaded manifest.

Generated library safety

Lifecycle scripts, binaries, and bundled dependencies are blocked by default for generated TypeScript libraries.