--- title: "asdf" category: "Languages and runtimes" tagline: "A plugin-based version manager for languages and tools, driven by .tool-versions files." source: "AUR" package: "asdf-vm" command: "asdf" website: "https://asdf-vm.com/" code: "https://github.com/asdf-vm/asdf" links: - name: "Getting started with asdf" url: "https://asdf-vm.com/guide/getting-started.html" --- ## What it is asdf manages several versions of programming languages and tools, such as Node.js, Ruby, Python or Elixir, through plugins. A `.tool-versions` file in a project lists the versions it needs, and asdf uses them whenever you work in that directory. ## Why it's here - **One manager, many languages.** Plugins cover hundreds of tools. - **Shared project files.** Many projects already ship a `.tool-versions` file. - **An alternative to mise.** For teams and scripts that expect asdf. ## On CoreDesktop asdf is installed from the AUR, but CoreDesktop doesn't add it to your shell: follow asdf's getting started guide to put its shims on your PATH. CoreDesktop manages Ruby with [mise](/software/mise/), which reads `.tool-versions` files too. `update` keeps asdf current with the rest of the AUR packages.