asdf-vm / asdf
Extendable version manager with support for Ruby, Node.js, Elixir, Erlang & more
AI Architecture Analysis
This repository is indexed by RepoMind. By analyzing asdf-vm/asdf in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.
Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.
Repository Summary (README)
Previewasdf
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?
- 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
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
See CONTRIBUTING.md in the repo or the Contributing section on the docs site.
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
Once upon a time there was a programming language<br/> There were many versions of it<br/> So people wrote a version manager for it<br/> To switch between versions for projects<br/> Different, old, new.
Then there came more programming languages<br/> So there came more version managers<br/> And many commands for them
I installed a lot of them<br/> I learnt a lot of commands
Then I said, just one more version manager<br/> Which I will write instead
So, there came another version manager<br/> asdf version manager - https://github.com/asdf-vm/asdf
A version manager so extendable<br/> for which anyone can create a plugin<br/> To support their favourite language<br/> No more installing more version managers<br/> Or learning more commands
<figure> <blockquote> This was the mail I wrote to a few friends to tell them about the project. Thanks to <a href="https://twitter.com/roshanvid" target="_blank" rel="noreferrer">@roshanvid</a> for suggesting that this go into the readme </blockquote> <figcaption> <a href="https://github.com/HashNuke" target="_blank" rel="noreferrer">@HashNuke</a> </figcaption> </figure>