git404hub

what is asdf fr?

asdf-vm/asdf — explained in plain English

Analysis updated 2026-05-18

25,330GoAudience · developerComplexity · 2/5LicenseSetup · easy

tl;dr

Single command-line tool to manage multiple versions of programming languages and runtimes across projects, replacing separate tools like nvm, rbenv, and pyenv.

vibe map

mindmap
  root((asdf))
    What it does
      Manage language versions
      Switch per project
      Plugin system
    How it works
      .tool-versions file
      Auto-switch on cd
      Respects old configs
    Use cases
      Multi-project dev
      Team consistency
      CI/CD setup
    Tech stack
      Go
      Shell plugins
      Bash/Zsh/Fish

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

what do people make with this?

VIBE 1

Automatically switch Node.js, Ruby, Python, or Elixir versions when entering a project folder.

VIBE 2

Manage multiple language versions on one machine without installing separate version managers.

VIBE 3

Ensure team members use identical language versions by committing a .tool-versions file to the repo.

what's the stack?

GoBashZshFishElvish

how it stacks up fr

asdf-vm/asdfmicrosoft/typescript-gogocolly/colly
Stars25,33025,32925,275
LanguageGoGoGo
Setup difficultyeasyeasyeasy
Complexity2/53/52/5
Audiencedeveloperdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

how do i run it?

Difficulty · easy time til it works · 5min
Use freely for any purpose including commercial, as long as you keep the copyright notice.

in plain english

asdf is a command-line tool that lets you manage multiple versions of programming languages and runtimes on a single computer, all from one place. The problem it solves is version chaos: different projects often need different versions of Node.js, Ruby, Python, Elixir, or other languages, and historically you needed a separate tool for each one (nvm for Node, rbenv for Ruby, pyenv for Python, and so on). asdf replaces all of those with a single unified tool. It works through a plugin system, each language or runtime has a plugin you install once, and then you can install and switch between any version of that tool using the same consistent commands. Each project can have a file called .tool-versions that specifies exactly which versions it needs, and asdf automatically switches to those versions when you navigate into that project folder. It also respects existing version files like .nvmrc and .ruby-version, so migrating from older tools is straightforward. You would use asdf if you are a developer who works on multiple projects simultaneously and needs them to run on different language versions without manually switching tools. The shell completion feature works with Bash, Zsh, Fish, and Elvish shells. The core tool is written in Go.

prompts (copy fr)

prompt 1
How do I set up asdf to manage Node.js and Python versions for my projects?
prompt 2
Show me how to create a .tool-versions file and have asdf automatically switch versions when I cd into a project.
prompt 3
I currently use nvm and rbenv separately. How do I migrate to asdf and uninstall the old tools?
prompt 4
How do I write a custom asdf plugin for a language or tool that doesn't have one yet?

Frequently asked questions

what is asdf fr?

Single command-line tool to manage multiple versions of programming languages and runtimes across projects, replacing separate tools like nvm, rbenv, and pyenv.

What language is asdf written in?

Mainly Go. The stack also includes Go, Bash, Zsh.

What license does asdf use?

Use freely for any purpose including commercial, as long as you keep the copyright notice.

How hard is asdf to set up?

Setup difficulty is rated easy, with roughly 5min to a first successful run.

Who is asdf for?

Mainly developer.

peek the repo → explain another one

This repo across BitVibe Labs

double-check against the repo, no cap.