Skip to content
SPECIFICTION
Get listed

nvm

github.com

Free plan Open source WindowsmacOSLinuxSelf-hosted
Visit github.com
Spec score 8.5 #4 of 30 in Runtime Version Managers

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

nvm Free Open-source Node.js version manager Read 29 Sep 2026 · github.com
nvm Free Node.js version installation · version switching · aliases · .nvmrc project selection · shell integration Read 15 Oct 2026 · github.com

Every nvm plan and price →

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

Alternatives to nvmAll alternatives →