{"id":13718027,"url":"https://github.com/bernardoduarte/awesome-version-managers","last_synced_at":"2025-10-17T09:31:21.746Z","repository":{"id":48998082,"uuid":"245520958","full_name":"bernardoduarte/awesome-version-managers","owner":"bernardoduarte","description":"A curated list of awesome Version Managers","archived":false,"fork":false,"pushed_at":"2024-05-17T00:06:35.000Z","size":112,"stargazers_count":120,"open_issues_count":0,"forks_count":12,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-05-19T17:15:51.762Z","etag":null,"topics":["awesome","awesome-list","version-manager"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc-by-4.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bernardoduarte.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":"contributing.md","funding":null,"license":"license","code_of_conduct":"code-of-conduct.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-03-06T21:36:29.000Z","updated_at":"2024-05-29T01:48:29.050Z","dependencies_parsed_at":"2023-11-08T06:44:12.410Z","dependency_job_id":"c45d0b5e-1cf0-4538-848a-8ebb3396892c","html_url":"https://github.com/bernardoduarte/awesome-version-managers","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bernardoduarte%2Fawesome-version-managers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bernardoduarte%2Fawesome-version-managers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bernardoduarte%2Fawesome-version-managers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bernardoduarte%2Fawesome-version-managers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bernardoduarte","download_url":"https://codeload.github.com/bernardoduarte/awesome-version-managers/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":236783809,"owners_count":19204065,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["awesome","awesome-list","version-manager"],"created_at":"2024-08-03T00:01:30.885Z","updated_at":"2025-10-17T09:31:21.740Z","avatar_url":"https://github.com/bernardoduarte.png","language":null,"readme":"# Awesome Version Managers [![Awesome](https://awesome.re/badge.svg)](https://awesome.re)\n\n\u003e A curated list of Version Managers\n\n## Contents\n\n- [Version Managers](#version-managers)\n  - [Generic](#generic)\n  - [Python](#python)\n  - [Node.js](#nodejs)\n  - [Ruby](#ruby)\n  - [Go](#go)\n  - [Rust](#rust)\n  - [Java](#java)\n  - [JVM](#jvm)\n  - [Swift](#swift)\n  - [PHP](#php)\n  - [Perl](#perl)\n  - [Lua](#lua)\n  - [Elixir](#elixir)\n  - [Erlang](#erlang)\n  - [Julia](#julia)\n  - [Crystal](#crystal)\n  - [Flutter](#flutter)\n  - [Scala](#scala)\n  - [Terraform](#terraform)\n  - [OpenTofu](#opentofu)\n  - [Solidity](#solidity)\n  - [Xcode](#xcode)\n  - [CMake](#cmake)\n  - [Unity](#unity)\n  - [Godot](#godot)\n  - [R](#r)\n  - [Zig](#zig)\n  - [Neovim](#neovim)\n  - [Lean](#lean)\n  - [D](#d)\n\n## Version Managers\n\n### Generic\n\n- [anyenv](https://github.com/anyenv/anyenv) - A version manager wrapper allowing maintenance of multiple version managers.\n- [aqua](https://github.com/aquaproj/aqua) - Declarative CLI Version manager written in Go. Support Lazy Install, Registry, and continuous update with Renovate. CLI version is switched seamlessly.\n- [asdf-vm](https://github.com/asdf-vm/asdf) - An extendable version manager using a plugin structure to handle new version managers.\n- [mise](https://github.com/jdx/mise) - An `asdf` drop-in replacement written in Rust.\n- [proto](https://github.com/moonrepo/proto) - A pluggable next-generation version manager for multiple programming languages as unified toolchain.\n- [vfox](https://github.com/version-fox/vfox) - A cross-platform, extensible version manager. It supports native Windows and Unix-like.\n- [woof](https://github.com/version-manager/woof) - A Bash-based version manager with plugin support optimized for UX\n- [spack](https://github.com/spack/spack) - A flexible package manager that supports multiple versions, configurations, platforms, and compilers.\n- [pkgx](https://github.com/pkgxdev/pkgx) - A blazingly fast, standalone, cross‐platform binary that runs anything in any version with zero system impact.\n- [vmr](https://github.com/gvcgo/version-manager) - A simple, cross-platform, and well-tested version manager for programming languages and tools.\n\n### Python\n\n- [pyenv](https://github.com/pyenv/pyenv) - A tool that allows you to switch between multiple versions of Python.\n- [pyenv-win](https://github.com/pyenv-win/pyenv-win) - A porting of pyenv for Windows.\n- [pyflow](https://github.com/David-OConnor/pyflow) - A multipurpose Python environment manager.\n- [pythonz](https://github.com/saghul/pythonz) - A program to automate the building and installation of Python versions.\n\n### Node.js\n\n- [fnm](https://github.com/Schniz/fnm) - Fast and simple Node.js version manager built in Rust\n- [nvm](https://github.com/nvm-sh/nvm) - A version manager for Node.js, designed to be installed per user, and invoked per shell.\n- [nvm-windows](https://github.com/coreybutler/nvm-windows) - Same of nvm, but for Windows.\n- [n](https://github.com/tj/n) - An interactive manager that has no subshells and no profile setup.\n- [volta](https://github.com/volta-cli/volta) - A JavaScript tool manager, designed to provide seamless, fully isolated node environments.\n- [nodenv](https://github.com/nodenv/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.\n- [nvs](https://github.com/jasongin/nvs) - A cross-platform utility for switching between different versions and forks of Node.js.\n- [nodebrew](https://github.com/hokaccha/nodebrew) - A simple Node.js version manager.\n- [nve](https://github.com/ehmicky/nve) - Run any command on specific Node.js versions.\n- [chnode](https://github.com/tkareine/chnode) - A lightweight Node.js version switcher that allows for auto-switching by updating the PATH, inspired by chruby.\n- [pnpm](https://github.com/pnpm/pnpm) - A fast and disk space efficient package manager that can also manage Node.js versions via it's env command.\n- [nvm-rust](https://github.com/beeequeue/nvm-rust) - A cross platform Node.js version manager made in Rust.\n\n### Ruby\n\n- [rbenv](https://github.com/rbenv/rbenv) - A manager that focus on switching Ruby versions.\n- [rbenv-win](https://github.com/nak1114/rbenv-win) - A porting of rbenv to Windows.\n- [rvm](https://github.com/rvm/rvm) - A tool that is loaded into the shell, overrides some commands and also manages gemsets.\n- [uru](https://bitbucket.org/jonforums/uru) - A lightweight, multi-platform command line tool that helps you use the multiple rubies, like MRI, JRuby and Rubinius.\n- [chruby](https://github.com/postmodern/chruby) - A Ruby version switcher that allows for auto-switching, updates PATH and has around 100 lines of code.\n- [frum](https://github.com/TaKO8Ki/frum) - A fast and modern Ruby version manager written in Rust that is also cross-platform.\n\n### Go\n\n- [gvm](https://github.com/moovweb/gvm) - An interface to manage Go versions.\n- [goenv](https://github.com/syndbg/goenv) - Version manager like pyenv and rbenv, but for Go.\n- [g](https://github.com/stefanmaric/g) - A simples Go version manager inspired by `n`.\n- [g](https://github.com/voidint/g) - A command-line tool for Linux, macOS, and Windows that provides convenient management and switching of multiple versions of the Go environment.\n- [goup](https://github.com/owenthereal/goup) - An elegant version manager written in Go that is installed with a one-liner and that work well on all Linux distros.\n\n### Rust\n\n- [rustup](https://github.com/rust-lang/rustup) - A manager that installs Rust from official release channels and allows to switch between stable, beta, and nightly compilers.\n\n### Java\n\n- [jenv](https://github.com/linux-china/jenv) - A cross-platform tool for managing parallel Versions of JDKs which allows for installing, switching, removing and listing candidates.\n- [jEnv](https://github.com/jenv/jenv) - A version switcher for Java that does not handle installation.\n- [jabba](https://github.com/shyiko/jabba) - A cross-platform Java manager that allows for installation and switching of JDKs.\n- [jvms](https://github.com/ystyle/jvms) - A JDK version manager for Windows made in Go.\n\n### JVM\n\n- [SDKMAN!](https://github.com/sdkman/sdkman-cli) - 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.\n\n### Swift\n\n- [swiftenv](https://github.com/kylef/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.\n- [swiftly](https://github.com/swift-server/swiftly) - A CLI tool for installing, managing, and switching between Swift toolchains, written in Swift.\n\n### PHP\n\n- [phpbrew](https://github.com/phpbrew/phpbrew) - A utility that builds and installs multiple version of PHP in your HOME directory allowing of switching between them.\n- [phpenv](https://github.com/phpenv/phpenv) - A version manager that operates binaries on the user directory and utilizes shims.\n\n### Perl\n\n- [perlbrew](https://github.com/gugod/App-perlbrew) - A tool that manages multiple Perl environments and allows switching between them.\n- [plenv](https://github.com/tokuhirom/plenv) - A manager that installs multiple versions on the home directory, uses shims and allows to set local version per directory.\n\n### Lua\n\n- [luaver](https://github.com/DhavalKapil/luaver) - A helper to manage and switch between different versions of Lua, LuaJIT and Luarocks.\n- [lenv](https://github.com/mah0x211/lenv) - A Lua version manager that allows installation and switching between multiple versions.\n\n### Elixir\n\n- [kiex](https://github.com/taylor/kiex) - A utility that allows build and switch between different Elixir versions.\n- [exenv](https://github.com/askagirl/exenv-1) - A Elixir version manager based on rbenv.\n\n### Erlang\n\n- [evm](https://github.com/robisonsantos/evm) - A tool that allows you to install multiple versions of erlang on your system and switch between them.\n- [kerl](https://github.com/kerl/kerl) - A POSIX shell tool for building and installing Erlang/OTP instances allowing for easy switches between those installations.\n\n### Julia\n\n- [juliavm](https://github.com/pmargreff/juliavm) - A CLI tool which allows you to install, manage, and work with Julia environments and switch between them.\n- [jlenv](https://github.com/HiroakiMikami/jlenv) - A Julia version manager based on rbenv.\n\n### Crystal\n\n- [crenv](https://github.com/crenv/crenv) - A Crystal version manager based on rbenv.\n\n### Flutter\n\n- [fvm](https://github.com/leoafarias/fvm) - A version manager allowing to reference Flutter SDK version on a per-project basis, allows you to have multiple versions installed.\n\n### Scala\n\n- [svm](https://github.com/yuroyoro/svm) - A version manager that switches and installs multiple Scala versions.\n\n### Terraform\n\n- [tfenv](https://github.com/tfutils/tfenv) - A Terraform version manager inspired by rbenv.\n\n### OpenTofu\n\n- [tofuenv](https://github.com/tofuutils/tofuenv) - A OpenTofu version manager inspired by tfenv.\n- [tenv](https://github.com/tofuutils/tenv) - A versatile version manager for OpenTofu, Terraform and Terragrunt, written in Go.\n\n### Solidity\n\n- [svm-rs](https://github.com/roynalnaruto/svm-rs) - A Solidity compiler version manager made in Rust.\n\n### Xcode\n\n- [xcodes](https://github.com/XcodesOrg/xcodes) - A command-line tool to install and switch between multiple versions of Xcode.\n- [Xcodes.app](https://github.com/XcodesOrg/XcodesApp) - An app that offers the easiest way to install and switch between multiple versions of Xcode.\n\n### CMake\n\n- [cvm](https://github.com/ParagonPawns/cmake-version-manager) - A cross platform command-line tool that help manage currently installed versions of CMake.\n\n### Unity\n\n- [uvm](https://github.com/Larusso/unity-version-manager) - 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.\n\n### Godot\n\n- [Godots](https://github.com/MakovWait/godots) - An app that manages your Godot versions and projects with support for all platforms while also allowing for theming.\n- [Godot Manager](https://github.com/eumario/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.\n- [Hourglass](https://gitlab.com/jwestman/hourglass) - A project manager that can also manage multiple versions of Godot engine with just a few clicks and that supports custom engine builds.\n- [GVM](https://github.com/noidexe/godot-version-manager) - A simple app that can install and remove any version of Godot, even the alpha, beta, rc and dev versions.\n\n### R\n\n- [rig](https://github.com/r-lib/rig) - A cross platform R version manager with no system requirements on any platform.\n\n### Zig\n\n- [zvm](https://github.com/tristanisham/zvm) - A version manager made in Go that works on Linux, BSD, MacOS, *nix systems including Windows.\n- [zigup](https://github.com/marler8997/zigup) - A Zig version manager made entirely with Zig.\n\n### Neovim\n\n- [bob](https://github.com/MordechaiHadad/bob) - A cross-platform and easy-to-use Neovim version manager, allowing for easy switching between versions right from the command line.\n\n### Lean\n\n- [elan](https://github.com/leanprover/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.\n\n### D\n\n- [ldcup](https://github.com/kassane/ldcup) - A small tool to install and manage LDC2 (LLVM backend) compiler.\n- [dvm](https://github.com/jacob-carlborg/dvm) - A small tool to install and manage DMD (self-hosting) compiler.\n\n## Contributing\n\nContributions welcome! Read the [contribution guidelines](contributing.md) first.\n","funding_links":[],"categories":["miscellaneous","Programming","See also","Other Lists","Others","Version-Switch-Tools"],"sub_categories":["Integrating with zsh","TeX Lists"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbernardoduarte%2Fawesome-version-managers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbernardoduarte%2Fawesome-version-managers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbernardoduarte%2Fawesome-version-managers/lists"}