Back to home

Documentation

Learn how to use the Noir Package Registry

Getting Started

The Noir Package Registry is a centralized repository for Noir packages, similar to npm for JavaScript or crates.io for Rust.

Browse packages, search for functionality, and install them in your Noir projects.

Installing Packages

First, install the nargo-add CLI tool:

cargo install nargo-add

Then, to install a package in your Noir project, use:

nargo add package-name

Note: After installing nargo-add, you can use nargo add directly. The tool also works with nargo-add package-name if you prefer.

Replace package-name with the actual package name from the registry.

Removing Packages

To remove a package from your Noir project, use:

nargo remove package-name

You can also remove multiple packages at once:

nargo remove package-one package-two

To also delete the cached source files from ~/nargo, use the --clean flag:

nargo remove package-name --clean

Note: Without --clean, only the dependency entry in Nargo.toml is removed. Cached source files are left in place for other projects that may use them.

Searching Packages

You can search for packages in several ways:

  • Use the search bar on the homepage
  • Press S or / to focus the search
  • Browse all packages from the navigation menu
  • View featured packages on the homepage

Publishing a Package

To publish a package, you need an API key tied to your GitHub account. The registry verifies that you own the GitHub repository before publishing.

Step 1 — Get an API key

Authenticate with your GitHub account to receive an API key:

curl -X POST https://noir-registry-production-229a.up.railway.app/api/auth/github \ -H "Content-Type: application/json" \ -d '{"github_token": "your_github_personal_access_token"}'

The response will include your api_key. Keep it safe.

Step 2 — Publish your package

Send a POST request with your package details:

curl -X POST https://noir-registry-production-229a.up.railway.app/api/packages/publish \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "my-package", "description": "A useful Noir library", "github_repository_url": "https://github.com/your-username/my-package", "version": "0.1.0", "license": "MIT", "keywords": ["crypto", "hashing"], "category": "cryptography" }'

Fields

namerequiredAlphanumeric, hyphens/underscores, max 50 chars
github_repository_urlrequiredMust be a repo you own on GitHub
descriptionoptionalShort description of the package
versionoptionalSemver string e.g. 0.1.0
licenseoptionale.g. MIT, Apache-2.0
keywordsoptionalArray of strings for discoverability
categoryoptionalOne of: cryptography, data-structures, math, utilities, zero-knowledge, circuits, standards

API Documentation

GET /api/packages

Get all packages

curl https://noir-registry-production-229a.up.railway.app/api/packages

GET /api/packages/:name

Get a specific package by name

curl https://noir-registry-production-229a.up.railway.app/api/packages/package-name

GET /api/search?q=query

Search packages by name or description

curl https://noir-registry-production-229a.up.railway.app/api/search?q=cryptography

Learn More