asdf-vm

    asdf-vm/asdf

    #331 this week

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

    cli
    asdf-vm
    bash
    elixir
    elvish
    erlang
    Go
    MIT
    25.4K stars
    927 forks
    25.4K GitHub watchers
    Updated 7/7/2026
    View on GitHub

    Backblaze Generative Media Hackathon

    Build the next generation of AI media apps with Genblaze, stored on Backblaze B2. $10,000 in prizes.

    Enter the hackathon

    Loading star history...

    Use Cases & Benefits

    • Manage multiple language runtime versions on a per-project basis using a single CLI tool extendable via plugins.
    • Provides a unified interface for managing many languages, eliminating the need for separate version managers and commands.
    • Use for developers needing consistent version control across Ruby, Node.js, Python, and other languages in one environment.
    • Use for teams requiring automatic runtime version switching when navigating different project directories.
    • Ideal for language maintainers or contributors who want to create custom plugins to support additional runtimes.

    About asdf

    asdf

    Lint Tests

    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!

    Contributing

    See CONTRIBUTING.md in the repo or the Contributing section on the docs site.

    Community & Questions

    • FAQ
    • GitHub Issues GitHub Issues: report a bug or raise a feature request to the asdf core team
    • StackOverflow Tag StackOverflow 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
    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 them

    I installed a lot of them
    I learnt a lot of commands

    Then I said, just one more version manager
    Which I will write instead

    So, there came another version manager
    asdf version manager - https://github.com/asdf-vm/asdf

    A 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
    @HashNuke

    Discover Repositories

    Search across tracked repositories by name or description