Numan installs plugins, modules, scripts, and completions from signed registries, pins immutable artifacts in a lockfile, and activates them with Nu only when you run numan activate.
README
Numan
Numan is a cross-platform package manager for Nushell. It installs registry plugins, modules, scripts, and completion payloads from signed registries, pins immutable artifacts in a lockfile, and activates plugins and modules with Nu only when you ask — keeping installs inert until you run numan activate.
Built in Rust for Linux, macOS, and Windows.
About
Nushell’s ecosystem has grown around community packages, but managing them across machines, Nu versions, and platforms is still painful. covers local installs well; registry-based workflows need verified artifacts, reproducible lockfiles, and safe activation that survives Nu upgrades.
nupm
Numan fills that gap:
Concern
How Numan handles it
Trust
Ed25519 signatures over registry indexes; built-in production trust root for official; SHA256 verification of plugin binaries
Reproducibility
Lockfile v2 pins version, payload hash, and install origin
Platform safety
Artifacts resolved for the compile-time OS/arch/libc triple
Nu version matching
Resolver respects per-package Nu constraints
Activation isolation
install never touches Nu; only activate registers plugins or writes autoloads
Crash recovery
Journals for activation, autoload, lifecycle, and nupm import operations
nupm coexistence
Read-only discovery, one-way import, and drift detection for existing nupm installs
Numan is early-stage. Core install, activate, update, remove, gc, registry, doctor, snapshots, nupm interoperability, and shell completions are implemented and covered by unit and hermetic integration tests, plus real-Nu acceptance on Linux, macOS, and Windows in CI. Pre-built release binaries are published via GitHub Releases.
Features
Registry-backed installs — search, inspect versions, and install owner/name or owner/name@version
Official registry — production trust root built in; numan init configures official automatically; numan registry sync verifies signed indexes
Package types — plugins and modules support activation; scripts and completion packages are install-only while their activation contracts are deferred
Verified artifacts — mandatory SHA256 for plugin binaries; signed registry indexes
Scoped activation — plugins active only when Nu executable hash, Nu version, and plugin registry path match
Module autoloads — managed vendor autoload files with ownership markers and candidate validation
Lifecycle management — update, remove, and gc with pending-lifecycle journal recovery
nupm interoperability — numan nupm status|inspect|import|diff for migration from nupm
Health checks — numan doctor diagnoses root health and applies safe repairs by default; --scan reports only
Shell completions — bash, fish, zsh, PowerShell, and Nushell via numan completions
Registry package support
Registry package type
Install, verify, and lock
numan activate
Support tier
Plugin
Yes
Yes, through Nu's plugin registry
Supported
Module
Yes
Yes, through a Numan-managed vendor autoload file
Supported
Script
Yes
No
Install-only; activation is deferred
Completion package
Yes
No
Install-only; activation is deferred
Install-only packages remain inert: Numan downloads, verifies, locks, lists,
removes, and garbage-collects their payloads, but does not execute them or
modify Nu configuration for them. This is separate from Numan's own shell
completion generator: numan completions is supported for bash, fish,
zsh, PowerShell, and Nushell (nu).
Installation
From source
Requires Rust1.88+ (stable recommended) and a Nushell binary on PATH for activation commands.
git clone https://github.com/tonythethompson/numan.git
cd numan
cargo install --path .
The binary is named numan.
Pre-built releases
Download the latest archive for your platform from GitHub Releases. Each release ships:
Platform
Archive
Binary
Linux (x86_64)
numan--x86_64-unknown-linux-gnu.tar.gz
numan
Windows (x86_64)
numan--x86_64-pc-windows-msvc.zip
numan.exe
macOS (Apple Silicon)
numan--aarch64-apple-darwin.tar.gz
numan
macOS (Intel)
numan--x86_64-apple-darwin.tar.gz
numan
Linux / macOS
tar -xzf numan--.tar.gz
install -m 755 numan--/numan ~/.local/bin/numan
Windows (PowerShell)
Expand-Archive numan--x86_64-pc-windows-msvc.zip -DestinationPath .
# Add the extracted folder to your PATH, or copy numan.exe into a directory already on PATH
Verify downloads with the SHA256SUMS file attached to each release.
Requires Rust (stable). The installed binary is named numan.
Requirements: a Nushell binary on PATH for numan init, numan activate, and related commands.
Shell completions
numan completions prints the script on stdout and a copy-ready install command on stderr.
# Bash
numan completions bash > ~/.local/share/bash-completion/completions/numan
# Zsh
numan completions zsh > ~/.zfunc/_numan
# Fish
numan completions fish > ~/.config/fish/completions/numan.fish
# PowerShell (append to $PROFILE; do not use Out-File — that overwrites the profile)
numan completions powershell | Add-Content -Encoding utf8 $PROFILE
# Nushell (vendor autoload; `nu` is accepted as an alias for `nushell`)
mkdir ($nu.data-dir | path join vendor/autoload)
numan completions nushell | save -f ($nu.data-dir | path join vendor/autoload/numan-completions.nu)
PowerShell completions are safe to place after other statements in $PROFILE. Prefer writing to a dedicated file and dot-sourcing if you want easier updates:
Copy-paste path from install through first activation:
# Install (pick one)
cargo install numan-cli
# or: download a release archive from GitHub Releases and add numan to PATH
numan init
numan registry sync
numan try # install + activate a starter that fits your Nu (e.g., skim for Nu 0.114)
numan doctor
Or pick a package yourself (numan search hides incompatible hits by default; use --all to see them):
Install is inert — nothing is registered with Nu until you run numan activate (or numan try, which activates after install). If a package needs a different Nu minor, Numan explains the mismatch and can offer numan setup nu (activations are per-Nu; re-activate after switching). When no compatible starter exists, numan try suggests installing a matching managed Nu version or searching for another package with numan search.
After Nu upgrades, refresh cached paths and activation identity:
Probe your local Nu installation and create Numan state under the default root (or --root):
numan init
numan init configures the official registry automatically and prints a numbered checklist when setup is incomplete.
2. Sync the registry
numan registry sync
3. Prove it works, or search and install
numan try # curated starter for your Nu + platform (e.g., skim for Nu 0.114)
# or:
numan search nutest # hides incompatible hits; use --all to show them
numan info vyadh/nutest
numan install vyadh/nutest
numan list
4. Activate with Nu
numan activate # activate all inactive packages
numan activate owner/package-name # activate specific packages
numan activate --list # show activation status
numan activate --check # verify activation integrity (read-only)
numan try already activates unless you pass --no-activate.
Global flag: --root — override the Numan root directory (all commands).
Command
Description
numan init [--refresh]
Probe Nu and cache paths for activation
numan try [--no-activate]
Install and activate a curated starter package for your Nu + platform (prefers Nu 0.114 starters; suggests managed Nu pin or search if no compatible starter)
numan search
Search registry by name, description, or tags
numan info
Show package metadata and available versions
numan install
Download, verify, extract, and lock
numan list
List installed packages and activation status
numan activate [pkg...]
Register plugins / write module autoloads (scripts and completion packages are deferred)
numan deactivate [pkg...]
Remove module autoload entries
numan update [--check] [pkg]
Upgrade installed packages
numan remove [--force]
Remove from lockfile and delete payload
numan gc [--dry-run]
Delete orphaned package directories
numan snapshot list
List all committed activation snapshots
numan snapshot inspect
Show snapshot contents and rollback diff (read-only)
numan snapshot delete [--yes]
Delete a snapshot
numan snapshot rollback [--yes]
Restore exactly a stored snapshot
numan registry list|sync|add|remove|packages
Registry management
numan setup nu [VERSION]
Download and install official Nushell under Numan root (optionally pinned)
numan setup nu remove
Remove the managed Nushell install and fall back to PATH Nu
numan setup nu path
Use the Nushell already on PATH (removes managed install)
numan setup nu use
Register a specific existing Nushell binary
Common flags (by command)
Command
Flags
install
--force reinstall; -v / --verbose
activate
--verbose; --list status only; --check integrity only
deactivate
--verbose
update
--check report only; -v / --verbose
remove
--force remove despite active activation
gc
--dry-run preview only
registry add
--key (required for custom registries; official is auto-configured on init)
nupm status
--nupm-home
nupm inspect
--all scan home; --nupm-home ; --exit-on-ineligible fail on ineligible
Numan can discover and import compatible packages from an existing nupm installation without modifying nupm state.
# Point at nupm home (or rely on $NUPM_HOME)
numan nupm status --nupm-home ~/.config/nupm
numan nupm inspect --all --nupm-home ~/.config/nupm
# Import a supported module package
numan nupm import /path/to/package --as myorg/my-module --yes
# Check drift after the source changes
numan nupm diff myorg/my-module
Compatibility matrix: which nupm package shapes Numan can import is defined in docs/nupm-compatibility.md (compat-schema-v1). Run numan nupm inspect to classify packages before import.
Design principles
Install is inert — installs write only to $NUMAN_ROOT; Nu is never invoked.
Activate is explicit — the only command that registers plugins or manages autoload files.
Lockfile is ground truth — derived state (e.g. autoload projections) is not authoritative.
Immutable payloads — versions are content-addressed; updates leave old dirs until gc.