Awesome
Awesome Version Managers
A curated list of Version Managers
Contents
Version Managers
Generic
- anyenv - A version manager wrapper allowing maintenance of multiple version managers.
- aqua - Declarative CLI Version manager written in Go. Support Lazy Install, Registry, and continuous update with Renovate. CLI version is switched seamlessly.
- asdf-vm - An extendable version manager using a plugin structure to handle new version managers.
- mise - An
asdf
drop-in replacement written in Rust. - proto - A pluggable next-generation version manager for multiple programming languages as unified toolchain.
- vfox - A cross-platform, extensible version manager. It supports native Windows and Unix-like.
- woof - A Bash-based version manager with plugin support optimized for UX
- spack - A flexible package manager that supports multiple versions, configurations, platforms, and compilers.
- pkgx - A blazingly fast, standalone, cross‐platform binary that runs anything in any version with zero system impact.
- vmr - A simple, cross-platform, and well-tested version manager for programming languages and tools.
Python
- pyenv - A tool that allows you to switch between multiple versions of Python.
- pyenv-win - A porting of pyenv for Windows.
- pyflow - A multipurpose Python environment manager.
- pythonz - A program to automate the building and installation of Python versions.
Node.js
- fnm - Fast and simple Node.js version manager built in Rust
- nvm - A version manager for Node.js, designed to be installed per user, and invoked per shell.
- nvm-windows - Same of nvm, but for Windows.
- n - An interactive manager that has no subshells and no profile setup.
- volta - A JavaScript tool manager, designed to provide seamless, fully isolated node environments.
- nodenv - A tool that can automatically select the appropriate node version for a given project and doesn't require shell integration or overriding of builtin commands.
- nvs - A cross-platform utility for switching between different versions and forks of Node.js.
- nodebrew - A simple Node.js version manager.
- nve - Run any command on specific Node.js versions.
- chnode - A lightweight Node.js version switcher that allows for auto-switching by updating the PATH, inspired by chruby.
- pnpm - A fast and disk space efficient package manager that can also manage Node.js versions via it's env command.
- nvm-rust - A cross platform Node.js version manager made in Rust.
Ruby
- rbenv - A manager that focus on switching Ruby versions.
- rbenv-win - A porting of rbenv to Windows.
- rvm - A tool that is loaded into the shell, overrides some commands and also manages gemsets.
- uru - A lightweight, multi-platform command line tool that helps you use the multiple rubies, like MRI, JRuby and Rubinius.
- chruby - A Ruby version switcher that allows for auto-switching, updates PATH and has around 100 lines of code.
- frum - A fast and modern Ruby version manager written in Rust that is also cross-platform.
Go
- gvm - An interface to manage Go versions.
- goenv - Version manager like pyenv and rbenv, but for Go.
- g - A simples Go version manager inspired by
n
. - g - A command-line tool for Linux, macOS, and Windows that provides convenient management and switching of multiple versions of the Go environment.
- goup - An elegant version manager written in Go that is installed with a one-liner and that work well on all Linux distros.
Rust
- rustup - A manager that installs Rust from official release channels and allows to switch between stable, beta, and nightly compilers.
Java
- jenv - A cross-platform tool for managing parallel Versions of JDKs which allows for installing, switching, removing and listing candidates.
- jEnv - A version switcher for Java that does not handle installation.
- jabba - A cross-platform Java manager that allows for installation and switching of JDKs.
- jvms - A JDK version manager for Windows made in Go.
JVM
- SDKMAN! - Install Software Development Kits for the JVM such as Java, Scala, Kotlin and Groovy. Ant, Gradle, Grails, Maven, SBT, Spark, Spring Boot, Vert.x and many others also supported.
Swift
- swiftenv - A Swift manager that changes version per user, set a per-project version and allows you to override the version with an environmental variable.
- swiftly - A CLI tool for installing, managing, and switching between Swift toolchains, written in Swift.
PHP
- phpbrew - A utility that builds and installs multiple version of PHP in your HOME directory allowing of switching between them.
- phpenv - A version manager that operates binaries on the user directory and utilizes shims.
Perl
- perlbrew - A tool that manages multiple Perl environments and allows switching between them.
- plenv - A manager that installs multiple versions on the home directory, uses shims and allows to set local version per directory.
Lua
- luaver - A helper to manage and switch between different versions of Lua, LuaJIT and Luarocks.
- lenv - A Lua version manager that allows installation and switching between multiple versions.
Elixir
- kiex - A utility that allows build and switch between different Elixir versions.
- exenv - A Elixir version manager based on rbenv.
Erlang
- evm - A tool that allows you to install multiple versions of erlang on your system and switch between them.
- kerl - A POSIX shell tool for building and installing Erlang/OTP instances allowing for easy switches between those installations.
Julia
- juliavm - A CLI tool which allows you to install, manage, and work with Julia environments and switch between them.
- jlenv - A Julia version manager based on rbenv.
Crystal
- crenv - A Crystal version manager based on rbenv.
Flutter
- fvm - A version manager allowing to reference Flutter SDK version on a per-project basis, allows you to have multiple versions installed.
Scala
- svm - A version manager that switches and installs multiple Scala versions.
Terraform
- tfenv - A Terraform version manager inspired by rbenv.
OpenTofu
- tofuenv - A OpenTofu version manager inspired by tfenv.
- tenv - A versatile version manager for OpenTofu, Terraform and Terragrunt, written in Go.
Solidity
- svm-rs - A Solidity compiler version manager made in Rust.
Xcode
- xcodes - A command-line tool to install and switch between multiple versions of Xcode.
- Xcodes.app - An app that offers the easiest way to install and switch between multiple versions of Xcode.
CMake
- cvm - A cross platform command-line tool that help manage currently installed versions of CMake.
Unity
- uvm - A tool which allows to install and manage multiple Unity versions on a system from the command-line that is also compatible with Unity-Hub.
Godot
- Godots - An app that manages your Godot versions and projects with support for all platforms while also allowing for theming.
- Godot Manager - An app made in C# that can manage the engine versions of Godot from the official Github repository, as well as getting updates from new releases.
- Hourglass - A project manager that can also manage multiple versions of Godot engine with just a few clicks and that supports custom engine builds.
- GVM - A simple app that can install and remove any version of Godot, even the alpha, beta, rc and dev versions.
R
- rig - A cross platform R version manager with no system requirements on any platform.
Zig
- zvm - A version manager made in Go that works on Linux, BSD, MacOS, *nix systems including Windows.
- zigup - A Zig version manager made entirely with Zig.
Neovim
- bob - A cross-platform and easy-to-use Neovim version manager, allowing for easy switching between versions right from the command line.
Lean
- elan - A small tool for managing your installations of the Lean theorem prover that is also the recommended way to set up in their documentation.
Contributing
Contributions welcome! Read the contribution guidelines first.