Where Does asdf Keep Runtimes and Version Pins?
Where the asdf version manager installs runtimes, shims, and plugins, plus the .tool-versions files that pin them.
Last updated
asdf keeps nearly everything under ~/.asdf in your home directory. Installed runtimes live in installs/, language plugins in plugins/, and the shims directory on your PATH ties them together.
Version choice is separate from all that. Small .tool-versions text files declare which version each directory wants, with the file nearest your shell winning. That split is why wiping ~/.asdf never loses a project's pin: the pin lives in the repo. The reshim command rebuilds shims after manual changes, fixing most command not found errors.
Where asdf stores this, by platform
~/.asdf
installs/, plugins/, and shims/ all live here, added to PATH by the shell init snippet. Global pins go in ~/.tool-versions next to it. Back up .tool-versions files; the rest can be reinstalled with asdf install.
~/.asdf
Same layout as macOS. ASDF_DATA_DIR relocates the whole tree if ~/.asdf does not suit you, but keep shims on PATH afterward. System wide installs point it somewhere shared like /opt/asdf instead.
~/.asdf (inside WSL2)
asdf has no native Windows build; run it inside WSL2 and use the Linux paths there. The Windows home folder stays untouched. Mixing Git Bash shims with WSL installs is the usual source of confusing which node errors.
Frequently asked questions
where does asdf store version pins
In a .tool-versions file, either in the project root or ~/.tool-versions for your global defaults. Each line names a tool and version, like nodejs 22.1.0. asdf walks up from the current directory, so the nearest file wins.
where are asdf runtimes installed
Under ~/.asdf/installs with one folder per tool and version, surfaced through ~/.asdf/shims on your PATH. Removing an installs subfolder uninstalls that version by hand, though asdf uninstall is cleaner.
where does asdf keep plugins
In ~/.asdf/plugins, one folder per plugin. asdf plugin list shows what is registered. The shims folder is regenerated on install and reshim, so never edit files there directly.
Notice an outdated path? Let us know.