asdf-vm/asdf
{ "createdAt": "2014-11-29T04:41:43Z", "defaultBranch": "master", "description": "Extendable version manager with support for Ruby, Node.js, Elixir, Erlang & more", "fullName": "asdf-vm/asdf", "homepage": "https://asdf-vm.com/", "language": "Go", "name": "asdf", "pushedAt": "2025-11-24T13:17:55Z", "stargazersCount": 24683, "topics": [ "asdf-vm", "bash", "cli", "elixir", "elvish", "erlang", "fish", "golang", "multiple-languages", "node", "nushell", "powershell", "python", "ruby", "shell", "version-manager", "zsh" ], "updatedAt": "2025-11-27T03:38:15Z", "url": "https://github.com/asdf-vm/asdf"}Manage multiple runtime versions with a single CLI tool, extendable via plugins - docs at asdf-vm.com
asdf is a CLI tool that can manage multiple language runtime versions on a per-project basis. It is like gvm, nvm, rbenv & pyenv (and more) all in one! Simply install your language’s plugin!
Why use asdf?
Section titled “Why use asdf?”- single CLI for multiple languages
- consistent commands to manage all your languages
- single global config keeping defaults in one place
- single
.tool-versionsconfig file per project - support for existing config files
.node-version,.nvmrc,.ruby-versionfor easy migration - automatically switches runtime versions as you traverse your directories
- simple plugin system to add support for your language of choice
- shell completion available for common shells (Bash, Zsh, Fish, Elvish)
Documentation
Section titled “Documentation”Please head over to the documentation site for more information!
- Getting Started
- All Commands
- All Plugins
- Create a Plugin with our asdf-plugin-template
- asdf GitHub Actions
Contributing
Section titled “Contributing”See CONTRIBUTING.md in the repo or the Contributing section on the docs site.
Community & Questions
Section titled “Community & Questions”- FAQ
GitHub Issues: report a bug or raise a feature request to the
asdfcore teamStackOverflow Tag: see existing Q&A for
asdf. Some of the core team watch this tag in addition to our helpful community
Ballad of asdf
Section titled “Ballad of asdf”Once upon a time there was a programming language
There were many versions of it
So people wrote a version manager for it
To switch between versions for projects
Different, old, new.Then there came more programming languages
So there came more version managers
And many commands for themI installed a lot of them
I learnt a lot of commandsThen I said, just one more version manager
Which I will write insteadSo, there came another version manager
asdf version manager - https://github.com/asdf-vm/asdfA version manager so extendable
for which anyone can create a plugin
To support their favourite language
No more installing more version managers
Or learning more commands
This was the mail I wrote to a few friends to tell them about the project. Thanks to @roshanvid for suggesting that this go into the readme