Registry

The niso registry is a package repository you can self-host or use via niso.dev. Push, pull, search, and manage packages with API keys and namespaces.

niso.dev registry#

The official public registry at niso.dev hosts official packages and community contributions. It is free to use.

bash
# Pull from niso.dev (default registry)$ niso pull redis$ niso pull nodejs:20# Search packages$ niso search postgres  postgres    16.0.0   Official PostgreSQL package  mariadb     11.0.0   Official MariaDB package

Self-hosting#

Run your own registry for private packages. The registry is a single binary with a SQLite database.

bash
# Start a registry$ niso registry serve \    --listen 0.0.0.0:5000 \    --data-dir /var/lib/niso-registry# Or run it as a niso service$ niso activate niso-registry

Authentication#

bash
# Login to a registry$ niso login https://registry.example.com --key <api-key># Create API keys$ niso registry create-key --scope "push:my-*" --name "ci-deploy"  Created key: niso_k1_abc123...  Store this key securely — it cannot be retrieved later.# List keys$ niso registry list-keys  ID          NAME        SCOPES              LAST USED  key_abc123  ci-deploy   push:my-*           2026-04-12# Revoke a key$ niso registry revoke-key key_abc123

API key scopes

Scopes control what an API key can do. Use glob patterns:

  • push:* — push any package
  • push:my-* — push packages starting with “my-”
  • pull:* — pull any package
  • delete:* — delete any package version
  • admin — full administrative access

Push and pull#

bash
# Push a package$ niso push my-api-1.0.0-x86_64.niso  Uploaded my-api 1.0.0 (x86_64) — 8.2 MB# Push to a specific registry$ niso push my-api-1.0.0-x86_64.niso --registry private# Pull latest version$ niso pull my-api# Pull specific version$ niso pull my-api:1.0.0# Pull, install, and activate in one step$ niso upgrade my-api# Upgrade to a specific version$ niso upgrade my-api:1.1.0

Tags#

Tags are mutable pointers to versions. Use them for release channels:

bash
# Create a tag$ niso tag my-api:1.0.0 my-api:stable# Pull by tag$ niso pull my-api:stable# List tags$ niso registry list-tags my-api  TAG      VERSION  stable   1.0.0  beta     1.1.0-rc1  latest   1.1.0

Registry configuration#

bash
# Add a named registry$ niso registry add private https://registry.example.com \    --key niso_k1_abc123 --default# List configured registries$ niso registry list  NAME      URL                               DEFAULT  niso.dev  https://registry.niso.dev         no  private   https://registry.example.com      yes

Garbage collection#

bash
# Clean up old versions (keep latest N per package)$ niso registry gc --keep-versions 5# Dry run first$ niso registry gc --keep-versions 5 --dry-run

Mirroring#

Mirror a registry for air-gapped environments or faster local access:

bash
# Mirror all packages from niso.dev to your private registry$ niso registry mirror --from niso.dev --to private

HTTP API#

The registry exposes a REST API for programmatic access. See the API Reference for the full specification.