nvm
github.com
What it is
nvm is a free, MIT-licensed command-line tool for installing and managing Node.js versions. It is designed for installation per user and invocation per shell, and works in POSIX-compliant shells including sh, dash, ksh, zsh, and bash. Users can install specific versions, switch between them, set aliases such as a default, and use LTS aliases and commands to select long-term support versions. A project can specify its Node.js version in an.nvmrc file; documented shell snippets can support automatic switching. During installation, nvm can reinstall global npm packages from another installed Node.js version. With the --offline flag, it can install a version that was previously downloaded or cached without network access. The project documents use in Docker, including an example for CI/CD jobs. On Windows, nvm can work through WSL and may work with Git Bash or Cygwin depending on the environment. Fish shell is not supported, and the project points users to community alternatives. The project states that only the latest nvm version is supported.
Spec sheet
- What it does
- nvm is a per-user, per-shell command-line manager for installing and using multiple Node.js versions.Read 15 Oct 2026 · github.com
- Purpose
- nvm lets users install and use different Node.js versions from the command line.Read 29 Sep 2026 · github.com
- Integrations
- Documented integrations include Docker, Ansible, zsh plugins, bash completion and optional nvshim shims.Read 15 Oct 2026 · github.com
- Security
- The GitHub repository links to a security policy, but the README does not state a security certification or compliance standard.Read 29 Sep 2026 · github.com
- Support
- The project states that only the latest nvm version is supported.Read 29 Sep 2026 · github.com
- License
- nvm is distributed under the MIT License, permitting use, modification, distribution and sale subject to retaining notices.Read 15 Oct 2026 · github.com
- Aliases
- Users can create aliases such as default or custom names for Node versions.Read 15 Oct 2026 · github.com
- API and SDKs
- The README documents a sourced shell command interface and environment variables; it does not describe a hosted HTTP API or SDK.Read 15 Oct 2026 · github.com
- Automatic switching
- Automatic directory switching is documented as user-added bash or zsh hooks rather than built into the core command.Read 15 Oct 2026 · github.com
- Core installation
- Users can install the latest Node release, a specific version, or source builds with nvm install.Read 15 Oct 2026 · github.com
- Docker and CI
- The documentation provides Dockerfile patterns using BASH_ENV and a separate CI/CD container example.Read 15 Oct 2026 · github.com
- Documentation depth
- The README includes installation, Docker, CI/CD, shell hooks, mirrors, offline mode, environment variables, testing, troubleshooting and uninstall guidance.Read 15 Oct 2026 · github.com
- Execution helpers
- nvm run and nvm exec run commands with a selected Node version without permanently changing the surrounding shell.Read 15 Oct 2026 · github.com
- Extensibility
- Mirror URLs, authorization headers and several NVM_* environment variables can customize downloads and installation behavior.Read 15 Oct 2026 · github.com
- Fish limitation
- The project does not natively support Fish and suggests wrappers or alternative managers.Read 15 Oct 2026 · cobalt.googlesource.com
- Independent mirror status
- SourceForge identifies its nvm page as an exact mirror and states it is not affiliated with the project.Read 15 Oct 2026 · sourceforge.net
- Independent project snapshot
- Hysen Labs recorded 95,544 GitHub stars, 10,530 forks, Shell as the main language and MIT licensing on October 15, 2026.Read 15 Oct 2026 · hysenlabs.com
- Installation model
- It is designed to be installed per user and invoked per shell.Read 29 Sep 2026 · github.com
- Latest release
- The release page lists v0.40.7 as a signed release adding concurrent-install serialization and safer download handling.Read 15 Oct 2026 · github.com
- Limit: Fish shell
- A Stack Overflow answer explains that nvm.sh cannot be sourced directly by Fish because Fish is not POSIX-compatible.Read 15 Oct 2026 · stackoverflow.com
- Limit: native Windows
- Independent comparison coverage says the original nvm does not work natively on Windows and requires the separate nvm-windows project.Read 15 Oct 2026 · ortamarco.me
- Limit: shared machines
- Microsoft warns that per-user symbolic-link behavior can make nvm unsuitable for shared developer boxes and multi-agent build servers.Read 15 Oct 2026 · learn.microsoft.com
- Limit: shell startup speed
- Marco Orta measured about 405 ms to load nvm and about 1,003 ms to switch versions in his six-version WSL2 test.Read 15 Oct 2026 · ortamarco.me
- LTS support
- The command set includes aliases and workflows for installing and selecting Node.js long-term-support releases.Read 15 Oct 2026 · github.com
- Offline installation
- Recent releases add nvm install --offline to install a version from the local cache without network access.Read 15 Oct 2026 · github.com
- Offline use
- It can install a previously downloaded or cached Node.js version without network access using the --offline flag.Read 29 Sep 2026 · github.com
- Package migration
- Installation can migrate global npm packages from another installed Node version.Read 15 Oct 2026 · github.com
- Platform limitation
- The project does not support the Fish shell and points users to community alternatives.Read 29 Sep 2026 · github.com
- Praise: ubiquity and stability
- Independent developer Marco Orta describes nvm as ubiquitous, extensively documented and stable.Read 15 Oct 2026 · ortamarco.me
- Project configuration
- nvm can use an .nvmrc file to specify a Node.js version for a project, with shell snippets documented for automatic switching.Read 29 Sep 2026 · github.com
- Project version files
- A .nvmrc file can specify a Node version, and nvm use, install and which search parent directories for it.Read 15 Oct 2026 · github.com
- Rating on SourceForge
- SourceForge shows no user rating and no posted reviews for the nvm mirror.Read 15 Oct 2026 · sourceforge.net
- Remote listings
- The nvm ls-remote command lists Node versions available from the configured mirror.Read 15 Oct 2026 · github.com
- Security advisories
- The repository lists 2026 advisories involving malicious mirrors, path traversal and command injection, with severities from low to high.Read 15 Oct 2026 · github.com
- Security audit
- An independent 2023 audit identified insider-threat and future third-party-library risks and recommended code review, scanning and separation of duties.Read 15 Oct 2026 · ostif.org
- Shell support
- It works on POSIX-compliant shells including sh, dash, ksh, zsh, and bash.Read 29 Sep 2026 · github.com
- Support model
- The project supplies GitHub issues, discussions and contribution guidance rather than a paid support plan.Read 15 Oct 2026 · github.com
- Supported shells
- The project documents POSIX shells including sh, dash, ksh, zsh and bash.Read 15 Oct 2026 · github.com
- System requirements
- Git installation requires Git 1.7.10 or newer, and source compilation requires a C++ toolchain plus platform build dependencies.Read 15 Oct 2026 · github.com
- Version management
- Users can install specific Node.js versions, switch between them, and set aliases such as a default version.Read 29 Sep 2026 · github.com
- Version switching
- nvm use changes the active Node version in the current shell.Read 15 Oct 2026 · github.com
- Windows support
- The original project targets Unix-like systems and Windows WSL; native Windows users are directed to the separate nvm-windows project.Read 15 Oct 2026 · cobalt.googlesource.com
Plans and prices
Strong points and limits
Strong points
- Install and switch between specific Node.js versions
- Project versions can be specified in .nvmrc
- Supports LTS aliases and commands
- Previously cached versions can be installed offline
Limits
- Fish shell is not supported
- Only the latest nvm version is supported
- Windows support through Git Bash or Cygwin depends on environment
Who it suits
nvm suits developers who want to manage Node.js versions per user and shell, including version selection for projects and CI/CD use. Windows users can use WSL; Git Bash or Cygwin may work depending on the environment.
Verdict
nvm provides per-user, per-shell Node.js version management with project configuration and offline installation options. Its shell support excludes Fish, and Windows use depends on WSL or environment-specific compatibility.
Where Specifiction places it
- Runtime Version Managers#4 of 308.5
- Disk Diagnostic Software#4 of 268.4
- Development Environment Managers#10 of 508.4