Freedom251 › Runtime Version Managers
asdf

What asdf is
asdf is a free, open-source tool version manager for Linux and macOS. It gives project teams one command interface and a shared `.tool-versions` file for selecting versions of multiple tools and runtimes. Plugins let it manage tools such as Node.js, Ruby and Elixir, and the plugin API can accommodate additional tools. When a tool runs, asdf searches for `.tool-versions` beginning in the current directory and moving toward the home directory, then uses shims to launch the selected version. Per-plugin support can also use existing version files such as `.ruby-version`, `.nvmrc` and `.node-version`. Listed shell support covers Bash, ZSH, Fish and Elvish, with completions available. A GitHub Action can use `.tool-versions` in CI/CD workflows. Installation options include Homebrew, Zypper, Pacman, precompiled binaries, Go or a source build. asdf manages tool versions, not system packages or upstream dependencies. If a tool has no version set, running it errors unless it is assigned `system`.
Who it suits
asdf suits project teams that want a shared configuration for consistent tool versions across Linux and macOS environments. It is aimed at managing runtimes and development tools rather than system packages or their upstream dependencies.
What it does well
- Free and open source
- One `.tool-versions` file covers multiple tools
- Supports Bash, ZSH, Fish and Elvish
- Can use existing version files per plugin
- Provides a GitHub Action for CI/CD
What to know first
- Does not manage system packages
- Does not manage upstream dependencies
- Unset tool versions error unless set to `system`
Limits
asdf manages tool versions but does not manage system packages or upstream dependencies. A tool with no selected version errors when run unless its version is set to `system`.
Plans
| Plan | Billed and limits | Price |
|---|---|---|
| asdf | Open-source tool version manager · no paid plans listed | Free |
As asdf-vm.com lists them, read 4 Oct 2026. The maker's own page has the final word.
Getting started
- Visit the asdf website and follow its getting-started guide.
- Choose an installation route such as Homebrew, Zypper, Pacman, a precompiled binary, Go or a source build.
- Install and configure asdf for a supported shell.
- Add the needed tool plugins and set project versions in `.tool-versions`.
- Use the listed GitHub Action to use `.tool-versions` in CI/CD workflows, if needed.
Verdict
asdf offers a shared way to select development tool versions, with plugins and several installation routes. Teams should account for its narrow scope and explicitly configure versions or use `system` where appropriate.
Questions
Is asdf free?
Yes. asdf is an open-source tool version manager, and no paid plans are listed.
Which operating systems does asdf support?
The listed supported operating systems are Linux and macOS.
Which tools can asdf manage?
Plugins let it manage tools such as Node.js, Ruby and Elixir. Its plugin API can support more tools.
Which shells are listed?
The homepage lists Bash, ZSH, Fish and Elvish support, with completions available.
How can I install asdf?
The getting-started guide lists Homebrew, Zypper, Pacman, precompiled binaries, Go and a source build.
Does asdf manage system packages?
No. It manages tool versions, not system packages or upstream dependencies.
Facts from asdf's own pages
- CI integration
- The homepage says asdf provides a GitHub Action to use `.tool-versions` in CI/CD workflows. · asdf-vm.com, 4 Oct 2026
- Execution
- asdf creates shims for installed executables so it can run the version specified for the current project. · asdf-vm.com, 4 Oct 2026
- Installation
- The getting-started guide describes installation through Homebrew, Zypper, Pacman, precompiled binaries, Go, or a source build. · asdf-vm.com, 4 Oct 2026
- Intended users
- The documentation describes using a shared `.tool-versions` file to help project teams use the same tool versions. · asdf-vm.com, 4 Oct 2026
- Limits
- asdf is a tool version manager, not a system package manager, and it does not manage upstream dependencies. · asdf-vm.com, 4 Oct 2026
- Migration
- asdf supports existing version files such as `.ruby-version`, `.nvmrc`, and `.node-version` on a per-plugin basis. · asdf-vm.com, 4 Oct 2026
- Plugins
- Plugins let asdf manage tools such as Node.js, Ruby, and Elixir, and the plugin API allows support for more tools. · asdf-vm.com, 4 Oct 2026
- Purpose
- asdf is a tool version manager that uses one `.tool-versions` file to share exact tool versions with a project team. · asdf-vm.com, 4 Oct 2026
- Security and trust
- The official pages opened for this research did not state security certifications or compliance claims. · asdf-vm.com, 4 Oct 2026
- Shell support
- The homepage lists Bash, ZSH, Fish, and Elvish support with completions available. · asdf-vm.com, 4 Oct 2026
- Supported operating systems
- The installation guide lists Linux and macOS dependency instructions and provides binaries for operating-system and architecture combinations. · asdf-vm.com, 4 Oct 2026
- Unified interface
- asdf provides one command interface and configuration file for managing multiple tools and runtimes. · asdf-vm.com, 4 Oct 2026
- Version resolution limit
- If no version is listed for a tool, executing that tool produces an error unless its version is set to `system`. · asdf-vm.com, 4 Oct 2026
- Version selection
- asdf selects a tool version from `.tool-versions` files starting in the current directory and searching up toward the home directory. · asdf-vm.com, 4 Oct 2026
Where asdf stands on Freedom251
- Runtime Version Managers#3 of 30
- Development Environment Managers#9 of 50
- Development Environment Management Tools#7 of 26