โ† Back to list

Master Runtime Versions with ASDF ๐Ÿš€

Swap the pile of nvm, pyenv, jenv, and sdkman for ASDFโ€Šโ€”โ€Ša single plugin-powered CLI that installs any runtime, respects legacy files, andโ€ฆ

Akshay N ยท 2025-06-01 07:06 ยท 0 claps ยท 1.9 min read
#asdf #version-manager #cli #runtime-environment
Open on Medium โ†—

Master Runtime Versions with ASDF ๐Ÿš€

Swap the pile of nvm, pyenv, jenv, and sdkman for ASDF โ€” a single plugin-powered CLI that installs any runtime, respects legacy files, and locks exact versions in one shareable .tool-versions file so your projects run the same everywhere ๐Ÿš€

A quick scene ๐ŸŽฌ

Friday night. You jump between a legacy Java app, a bleeding-edge React repo, and a dusty Python 2 script. Each project yells for its own version manager โ€” nvm, pyenv, sdkman.

Tabs multiply. Shell profiles bloat. You lose track of which tool owns your $PATH.

Sound familiar? Youโ€™re not alone.

The lightbulb moment ๐Ÿ’ก

You hear about ASDF. One binary. A plugin system. A single file called .tool-versions.

Curious, you run asdf โ€” version It prints v0.16.7 (released Mar 27 2025). Done โ€” no extra setup script, because ASDF was rewritten in Go and now runs 2ร—-7ร— faster than the old Bash version.

You think, โ€œCould this replace the pile of managers on my machine?โ€

Core ideas in 30 seconds โฑ๏ธ

  • Plugins on demand โ€” install only the runtimes you need.
  • .tool-versions โ€” pin every runtime and version in one file, commit it, share it.
  • Legacy support โ€” flip legacy_version_file = yes in .asdfrc and ASDF will read .nvmrc, .python-version, .ruby-version, etc.
  • Single binary โ€” fast startup, easy upgrades.

Install ASDF in two commands ๐Ÿ› ๏ธ

macOS ๐Ÿ

brew install asdf
echo '. /opt/homebrew/opt/asdf/libexec/asdf.sh' >> ~/.zshrc
source ~/.zshrc

Linux ๐Ÿง

git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.16.7
echo '. $HOME/.asdf/asdf.sh' >> ~/.bashrc
source ~/.bashrc

Configure .asdfrc โš™๏ธ

legacy_version_file = yes
# optional:
# plugins_repo = https://github.com/asdf-vm/asdf-plugins.git

Now, ASDF respects any old project files your team already uses.

Add a few plugins ๐ŸŽฏ

asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
asdf plugin add python https://github.com/danhper/asdf-python.git
asdf plugin add java https://github.com/halcyon/asdf-java.git
asdf plugin add terraform https://github.com/asdf-community/asdf-hashicorp.git
asdf plugin add kubectl https://github.com/asdf-community/asdf-kubectl.git
asdf plugin add awscli https://github.com/MetricMike/asdf-awscli.git
asdf plugin add gcloud https://github.com/jthegedus/asdf-gcloud.git
asdf plugin add azcli https://github.com/mutemutsa/asdf-azcli.git

# Install runtimes:
asdf install nodejs 20.12.0
asdf install python 3.12.1
asdf install java temurin-21.0.2+13

Migrate to a new machine in minutes ๐Ÿšš

  1. Copy .asdfrc and .tool-versions.
  2. Install ASDF as above.
  3. Run asdf plugin-update โ€” all, then asdf install.

Thatโ€™s it โ€” your full environment is live.

A skepticโ€™s pause ๐Ÿง

  • Do you only code in JavaScript?
  • You might prefer Volta, a Node-specific manager with global shims.
  • Need zero-config installs for every new dev?
  • Tools like mise offer a similar goal with their own takes on UX.
  • Worried about one tool failing and blocking your day?
  • Keep NVM or Pyenv installed for a while. Switch back only if you hit a blocker.

Try ASDF for a week. Track whether it truly cuts friction or just shifts it. Measure, donโ€™t guess.

Ready to ditch the version-manager zoo? ๐Ÿฆ

Clone the repo, write your .tool-versions, and run your projects without the constant โ€œwhich runtime am I on?โ€ anxiety.

Your future self โ€” and your teammates โ€” will breathe easier.


๋ฉ”ํƒ€๋ฐ์ดํ„ฐ
post_id
4800aac26fda
slug
master-runtime-versions-with-asdf-4800aac26fda
url
https://medium.com/@akshay-na/master-runtime-versions-with-asdf-4800aac26fda
canonical_url
https://medium.com/@akshay-na/master-runtime-versions-with-asdf-4800aac26fda
author_url
https://medium.com/@akshay-na
status
ok
fetched_at
2026-07-19 15:39:48