Wrap your tools with elegance
nori is a deterministic, cross-platform package manager that wraps your development tools in a simple, consistent interface—just like nori (seaweed) wraps sushi to make it easier to handle.
Note: Currently, nori supports Neovim only. More packages will be added to the registry soon.
Prerequisites:
- Go 1.25.3 or later
Build steps:
# Clone the repository
git clone https://github.com/chirag-bruno/nori.git
cd nori
# Build the binary
go build -o nori ./cmd/nori
# (Optional) Install to a directory in your PATH
# For example, on macOS/Linux:
sudo mv nori /usr/local/bin/
# Or on macOS with Homebrew prefix:
mv nori /opt/homebrew/bin/After installing nori, you need to initialize it to add the shims directory to your PATH:
# Initialize nori (adds ~/.nori/shims to PATH)
nori init
# Reload your shell configuration
source ~/.zshrc # for zsh
# or
source ~/.bashrc # for bashThis will:
- Create the
~/.noridirectory structure - Add
~/.nori/shimsto your PATH in your shell profile - Set up the environment for managing packages
# Update the registry to get the latest package information
nori update
# Search for packages
nori search neovim
# Get information about a package
nori info neovim
# Install a package
nori install neovim@0.9.5
# Set a version as active
nori use neovim@0.9.5
# List installed packages
nori listExisting package managers have grown complex:
- Homebrew is powerful but massive, with intricate internals that are hard to understand
- asdf requires package authors to write bash scripts, creating maintenance burden
- Most tools lack determinism—the same install can produce different results
- Cross-platform support is often an afterthought
nori wraps packages with:
- Simplicity: No scripts from publishers. Ever. Just declarative YAML manifests.
- Determinism: Fixed directory layout, mandatory checksums, reproducible installs.
- Cross-platform: Built-in support for Linux, macOS, and Windows from day one.
- Single source of truth: Public registry with per-package YAML manifests.
- Stable PATH: One shim directory added to PATH once—no constant manipulation.
nori wraps your tools in a clean abstraction layer:
┌─────────────────────────────────────┐
│ Your Tools (node, python) │
│ ┌───────────────────────────────┐ │
│ │ nori shims (the wrapper) │ │
│ └───────────────────────────────┘ │
│ nori (the manager) │
└─────────────────────────────────────┘
Just as nori wraps food to make it easier to handle, nori wraps your packages so you can manage them with elegance and consistency.
- No scripts from publishers: Publishers only declare what exists, not how to install it
- Single source of truth: One registry, one manifest per package
- Deterministic installs: Same inputs always produce same outputs
- Cross-platform by default: Platform selection is automatic, not manual
- Stable PATH: One shim directory, added once, never changed
| Feature | nori | Homebrew | asdf |
|---|---|---|---|
| Simplicity | ✅ Declarative YAML | ❌ Complex internals | |
| Determinism | ✅ Fixed layout + checksums | ||
| Cross-platform | ✅ Built-in | ✅ Via plugins | |
| Package author burden | ✅ YAML only | ❌ Formula complexity | ❌ Bash scripting |
| PATH management | ✅ Single shim dir |
nori — because your tools deserve to be wrapped with elegance.
