Automatically switch Node.js, Ruby, Python, or Elixir versions when entering a project folder.
Manage multiple language versions on one machine without installing separate version managers.
Ensure team members use identical language versions by committing a .tool-versions file to the repo.
asdf is a command-line tool that lets you manage multiple versions of programming languages and runtimes on a single computer, all from one place. The problem it solves is version chaos: different projects often need different versions of Node.js, Ruby, Python, Elixir, or other languages, and historically you needed a separate tool for each one (nvm for Node, rbenv for Ruby, pyenv for Python, and so on). asdf replaces all of those with a single unified tool. It works through a plugin system, each language or runtime has a plugin you install once, and then you can install and switch between any version of that tool using the same consistent commands. Each project can have a file called .tool-versions that specifies exactly which versions it needs, and asdf automatically switches to those versions when you navigate into that project folder. It also respects existing version files like .nvmrc and .ruby-version, so migrating from older tools is straightforward. You would use asdf if you are a developer who works on multiple projects simultaneously and needs them to run on different language versions without manually switching tools. The shell completion feature works with Bash, Zsh, Fish, and Elvish shells. The core tool is written in Go.
Generated 2026-05-18 · Model: sonnet-4-6 · Verify against the repo before relying on details.