fnm is a Node.js version manager built in Rust that prioritizes speed and simplicity across macOS, Windows, and Linux.
The tool solves the problem of managing multiple Node.js versions on a single machine. It works by reading `.node-version` and `.nvmrc` files to determine which version should be active, and it installs as a single binary with minimal setup overhead. The Rust implementation focuses on fast startup and execution compared to alternatives written in other languages.
fnm suits developers who need to switch between Node.js versions frequently and want a lightweight, cross-platform solution. It works well in projects that already use `.node-version` or `.nvmrc` files for version specification. The tool offers multiple installation methods including Homebrew on macOS, Winget and Scoop on Windows, and Cargo across platforms, making it accessible regardless of your preferred package manager. Shell setup is required through `fnm env` evaluation, with support for bash, zsh, fish, and PowerShell, and the README recommends passing an explicit shell argument for better performance.
The project maintains active continuous integration workflows and receives regular updates through multiple installation channels. Development activity shows consistent attention to cross-platform compatibility and shell integration, with documentation covering configuration options for features like automatic version switching.