What Is Nodus?
Nodus is a package manager for repo-scoped AI tooling.
If a package publishes content under folders like skills/, agents/, rules/, or commands/, Nodus can:
- add it from GitHub, Git, or a local path
- pin what you asked for in
nodus.toml - lock the exact resolved revision in
nodus.lock - write managed files into
.codex/,.claude/,.cursor/,.agents/, or.opencode/ - prune stale generated files without touching unmanaged ones
For most users, the main command is:
Install
Install from crates.io:
Install the latest prebuilt binary on macOS or Linux:
|
Install with Homebrew:
Quick Start
Install a package for Codex:
That one command:
- creates
nodus.tomlif your repo does not have one yet - records the dependency in
nodus.toml - resolves the latest tag by default
- locks the exact resolved revision in
nodus.lock - writes managed runtime files for the selected adapter
Validate the result:
Typical output files look like this:
.codex/skills/<skill-id>_<source-id>/
.claude/skills/<skill-id>_<source-id>/
.cursor/rules/<rule-id>_<source-id>.mdc
nodus add
Add from GitHub:
Add from a local path:
Pin a tag, branch, commit, or semver range:
Install only part of a package:
Add a dev-only dependency:
Start tools with automatic sync:
Preview changes without writing them:
Common Tasks
Inspect a package without changing your repo:
See what can be updated:
Update dependencies and rewrite managed files:
Rebuild managed files from what is already recorded:
Use these in CI:
Remove a dependency:
Check that your manifest, lockfile, store, and managed files are consistent:
Generate shell completions:
Advanced
Supported platforms:
- macOS (
x86_64,arm64) - Linux (
x86_64,arm64/aarch64) - Windows (
x86_64)
By default, Nodus stores shared mirrors, checkouts, and snapshots here:
macOS: ~/Library/Application Support/nodus/
Linux: ~/.local/state/nodus/ (or $XDG_STATE_HOME/nodus/)
Windows: %LOCALAPPDATA%\nodus\
Override that location for any command with --store-path <path>.
Install a specific release with the installer script:
|
When To Use sync vs update
Use nodus sync when you want Nodus to make the repo match your current manifest and lockfile.
Use nodus update when you want Nodus to look for newer allowed versions first, then sync to those newer results.
Use nodus sync --locked in CI when the lockfile must not change.
Use nodus sync --frozen when installs must use the exact revisions already recorded in nodus.lock.
Adapters
Nodus writes outputs only for the adapters your repo uses.
Supported adapters today:
agentsclaudecodexcursoropencode
You can choose adapters explicitly with --adapter, persist them in nodus.toml, or let Nodus detect them from existing repo roots such as .codex/ or .claude/.
Manifest
The smallest useful consumer manifest looks like this:
[]
= ["codex"]
[]
= { = "WendellXY/nodus", = "v0.3.2" }
Common dependency forms:
[]
= { = "vendor/playbook" }
= { = "owner/tooling", = "^1.2.0" }
= { = "owner/shared", = "v1.4.0", = ["skills"] }
[]
= { = "vendor/internal" }
Direct dependencies can also map files or directories into the consuming repo:
[]
= "vendor/shared"
[[]]
= "prompts/review.md"
= ".github/prompts/review.md"
For a fuller example, see examples/nodus.toml.
Package Layout
Nodus discovers package content from these conventional paths:
skills/<id>/SKILL.mdagents/<id>.mdrules/<id>.*commands/<id>.md
Packages can also declare:
content_rootsto publish additional folderspublish_root = trueto emit the root package itselfcapabilitiesfor privileged behavior such as high-sensitivity actions
If a package declares high sensitivity capabilities, install or update with:
Relay
nodus relay is for package maintainers who edit generated runtime files in a consumer repo and want to copy those edits back into the source checkout.
This is an advanced workflow. Most users only need add, info, outdated, update, sync, remove, and doctor.
Why Teams Use Nodus
- one command to add repo-scoped AI tooling
- exact revisions locked in
nodus.lock - generated files stay managed and pruneable
- unmanaged files are never overwritten
- mirrors, checkouts, and snapshots are shared across repos
Contributing
See CONTRIBUTING.md for local development and release checks.
License
Licensed under Apache-2.0.