finds.dev← search

// the find

isaacs/nave

★ 1,635 · Shell · BlueOak-1.0.0 · updated Jan 2026

Virtual Environments for Node

nave is a Node.js version manager written in pure bash that uses subshells instead of shell function injection. It's by isaacs (npm creator), so it knows its way around the Node ecosystem. You get a clean subshell per version, exit with ^D, and named environments for project-specific setups.

The subshell model is architecturally sounder than nvm's approach of mutating your current shell via sourced functions — you always know exactly which node you're running and ^D gives you a clean exit. Supports .naverc/.nvmrc auto-detection with PROMPT_COMMAND integration so switching versions on cd is doable without aliasing cd. Test coverage is serious: 100% bash coverage enforced via kcov with snapshot-based tests for every command path. XDG_CONFIG_HOME support and per-version .nave_profile files make it composable with modern dotfile setups.

The subshell model is also the main friction point — if you want to run a one-off command without spawning a new shell, you need `exec nave use <version>`, which replaces your current shell process, an easy footgun if you forget. Windows is a hard no (no WSL/Cygwin workaround supported officially). At 1,635 stars in 2026 it's clearly niche — fnm has eaten most of this space with faster installs and native cross-platform support. The `nave auto` / `PROMPT_COMMAND` setup requires non-trivial shell config that the README somewhat buries under escalating 'too magical' warnings, which is accurate but unhelpful.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →