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-addThen, to install a package in your Noir project, use:
nargo add package-nameNote: 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-nameYou can also remove multiple packages at once:
nargo remove package-one package-twoTo also delete the cached source files from ~/nargo, use the --clean flag:
nargo remove package-name --cleanNote: 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 charsgithub_repository_urlrequiredMust be a repo you own on GitHubdescriptionoptionalShort description of the packageversionoptionalSemver string e.g. 0.1.0licenseoptionale.g. MIT, Apache-2.0keywordsoptionalArray of strings for discoverabilitycategoryoptionalOne of: cryptography, data-structures, math, utilities, zero-knowledge, circuits, standardsAPI Documentation
GET /api/packages
Get all packages
curl https://noir-registry-production-229a.up.railway.app/api/packagesGET /api/packages/:name
Get a specific package by name
curl https://noir-registry-production-229a.up.railway.app/api/packages/package-nameGET /api/search?q=query
Search packages by name or description
curl https://noir-registry-production-229a.up.railway.app/api/search?q=cryptography