asdf

Extendable version manager with support for Ruby, Node.js, Elixir, Erlang & more

25,519 stars Go Markdown Skills API Spec #asdf-vm#bash#cli#elixir
AI Prompts & Specs

Repository: asdf-vm/asdf


Stars: 25271

README.md

asdf

![Lint](https://github.com/asdf-vm/asdf/actions/workflows/lint.yml) ![Tests](https://github.com/asdf-vm/asdf/actions/workflows/tests.yml)

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-versions config file per project
- support for existing config files .node-version, .nvmrc, .ruby-version for 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 GitHub Issues](https://github.com/asdf-vm/asdf/issues): report a bug or raise a feature request to the asdf core team
- ![StackOverflow Tag StackOverflow Tag](https://stackoverflow.com/questions/tagged/asdf-vm): 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>