Skip to content

asdf Version Manager

When to use this skill

Manage runtime versions for projects. Install Python, Node.js, Go, or other language runtimes. Switch versions per project using .tool-versions files.

Quick start

Install a runtime

# Add plugin
asdf plugin add python

# Install version
asdf install python 3.12.0

# Set global default
asdf global python 3.12.0

# Set project version
asdf local python 3.12.0

Common runtimes

# Python
asdf plugin add python && asdf install python 3.12.0

# Node.js
asdf plugin add nodejs && asdf install nodejs 20.10.0

# Go
asdf plugin add golang && asdf install golang 1.21.5

Install from .tool-versions

# asdf automatically reads .tool-versions in current directory
asdf install

Common commands

# Plugin management
asdf plugin list                    # List installed plugins
asdf plugin add <name>              # Add plugin
asdf plugin update --all            # Update all plugins

# Version management
asdf list <plugin>                  # List installed versions
asdf list all <plugin>              # List all available versions
asdf install <plugin> <version>     # Install version
asdf uninstall <plugin> <version>   # Uninstall version

# Set versions
asdf global <plugin> <version>      # Set global default
asdf local <plugin> <version>       # Set project version (.tool-versions)
asdf current                        # Show current versions

# Utility
asdf reshim <plugin>                # Rebuild shims
asdf which <command>                # Show path to command

Configuration

asdf uses ~/.tool-versions for global defaults and .tool-versions in project directories for project-specific versions.

Example .tool-versions:

python 3.12.0
nodejs 20.10.0

Common issues

  • Command not found: Run asdf reshim <plugin> to rebuild shims
  • Version not available: Update plugin with asdf plugin update <plugin>
  • Slow installs: Some plugins compile from source (Python)
  • Shell not configured: Ensure asdf is sourced in shell rc file