Extendable CLI tool to manage multiple language runtime versions with a single interface and per-project configuration.
asdf is a command-line version manager that allows developers to handle multiple programming language runtimes through a unified interface. It replaces the need for multiple single-language version managers by providing a plugin-based system that supports Ruby, Node.js, Elixir, Erlang, and many other languages.
Developers working with multiple programming languages who need to manage different runtime versions across projects, such as full-stack engineers, DevOps practitioners, and polyglot programmers.
Developers choose asdf over alternatives because it consolidates the fragmented ecosystem of language-specific version managers into one extensible tool, reducing cognitive overhead with consistent commands and a single configuration file per project.
Extendable version manager with support for Ruby, Node.js, Elixir, Erlang & more
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Manages multiple language runtimes with consistent commands, replacing the need for separate tools like nvm and rbenv, as highlighted in the README's single CLI feature.
Uses a .tool-versions file per project to automatically switch runtime versions as you navigate directories, simplifying workflow with per-project configuration.
A simple plugin system allows adding support for any language or tool, with a wide range of community-maintained plugins available, enabling easy extension beyond core features.
Compatible with legacy version files like .nvmrc and .ruby-version, easing transition from other version managers without immediate config changes.
Functionality for each language relies on community plugins, which can vary in reliability, update frequency, and feature completeness, leading to inconsistent support.
Installation and configuration require following external documentation and multiple steps, which can be more complex than setting up a single-language manager.
Managing multiple versions across different languages might cause shell environment issues if not carefully configured, especially with overlapping dependencies or plugin interactions.
asdf is an open-source alternative to the following products:
nvm (Node Version Manager) is a command-line tool that allows developers to install and switch between multiple versions of Node.js on a single machine.
GVM (Go Version Manager) is a tool for managing multiple Go installations on a single system, allowing developers to easily switch between different Go versions.
rbenv is a command-line tool for managing multiple Ruby versions on Unix-like systems, allowing developers to switch between Ruby versions per project.
pyenv is a Python version management tool that allows users to install, switch, and manage multiple Python versions on a single system.