asdf Commands
Searchable asdf version manager reference. Covers plugin management, version switching, and environment setup with one-click copy.
Last updated:
How to Use
Expand how to useCollapse how to use
- 1
Search for commands
Enter a command name in the search field, or filter by category (Plugin, Tools, Utils) to find the command you need.
- 2
Review options and examples
Check the command description, common options, and practical usage examples.
- 3
Copy commands
Click the copy button to copy the command to your clipboard for immediate use in your terminal.
asdf plugin addAdd a plugin
Common Options
- <name>: Specify plugin name
- <git-url>: Specify custom repository URL
Examples
asdf plugin add nodejsAdd the Node.js pluginasdf plugin add pythonAdd the Python pluginasdf plugin add erlang https://github.com/asdf-vm/asdf-erlang.gitAdd a plugin from a custom URLasdf plugin listList installed plugins
Common Options
- --urls: Show plugin repository URLs
- --refs: Show Git reference information
Examples
asdf plugin listShow installed pluginsasdf plugin list --urlsShow plugins with URLsasdf plugin list allList all available plugins
Common Options
- Output: Plugin names and repository URLs
Examples
asdf plugin list allShow all available pluginsasdf plugin removeRemove a plugin and all its versions
Common Options
- <name>: Specify plugin name to remove
Examples
asdf plugin remove nodejsRemove the Node.js pluginasdf plugin remove pythonRemove the Python pluginasdf plugin updateUpdate a plugin to the latest version
Common Options
- <name>: Specify plugin name to update
- <git-ref>: Update to a specific Git reference
Examples
asdf plugin update nodejsUpdate the Node.js pluginasdf plugin update pythonUpdate the Python pluginasdf plugin update --allUpdate all plugins to their latest versions
Common Options
- Batch update: Updates all installed plugins
Examples
asdf plugin update --allUpdate all plugins at onceasdf installInstall a specific version
Common Options
- <name> <version>: Specify plugin name and version
- <name> latest: Install the latest stable version
- No args: Install all versions from .tool-versions
Examples
asdf install nodejs 20.11.0Install Node.js 20.11.0asdf install nodejs latestInstall the latest stable Node.jsasdf installInstall all versions from .tool-versionsasdf uninstallUninstall a specific version
Common Options
- <name> <version>: Specify plugin name and version
Examples
asdf uninstall nodejs 18.0.0Uninstall Node.js 18.0.0asdf uninstall python 3.9.0Uninstall Python 3.9.0asdf setSet a tool version in .tool-versions
Common Options
- <name> <versions...>: Specify plugin name and versions
- -u: Update .tool-versions in the parent directory
- -p: Update .tool-versions in the current directory only
Examples
asdf set nodejs 20.11.0Set Node.js version in the current directoryasdf set -u nodejs 20.11.0Update .tool-versions in the parent directoryasdf set python 3.12.0Set the Python versionasdf currentShow currently active versions
Common Options
- <name>: Show version for a specific plugin
- No args: Show all current versions
Examples
asdf currentShow all current versionsasdf current nodejsShow current Node.js versionasdf listList installed versions
Common Options
- <name>: Show versions for a specific plugin
- <name> <version>: Filter versions
Examples
asdf list nodejsShow installed Node.js versionsasdf list nodejs 20Show only installed Node.js 20.x versionsasdf list allList all available versions
Common Options
- <name>: Specify plugin name
- <version>: Filter versions
Examples
asdf list all nodejsShow all available Node.js versionsasdf list all nodejs 20Show only Node.js 20.x versionsasdf latestShow the latest stable version
Common Options
- <name>: Specify plugin name
- --all: Show latest versions of all packages with install status
Examples
asdf latest nodejsShow latest stable Node.js versionasdf latest --allShow latest versions of all packagesasdf whereShow install path of a version
Common Options
- <name> <version>: Specify plugin name and version
- <name>: Show the current version's path
Examples
asdf where nodejs 20.11.0Show Node.js 20.11.0 install pathasdf where pythonShow current Python install pathasdf whichShow the path of an executable
Common Options
- <command>: Specify the executable name
Examples
asdf which nodeShow the path of the node executableasdf which pythonShow the path of the python executableasdf helpShow documentation for a plugin and tool
Common Options
- <name>: Specify plugin name
- <version>: Show help for a specific version
Examples
asdf help nodejsShow Node.js plugin documentationasdf help python 3.12.0Show Python 3.12.0 documentationasdf execExecute a command shim for the current version
Common Options
- <command>: Command to execute
- [args...]: Arguments to pass to the command
Examples
asdf exec node --versionCheck the current Node.js versionasdf exec python -c "print('hello')"Run a command with the current Pythonasdf envRun a utility inside the shim execution environment
Common Options
- <command>: Target command
- [util]: Utility to run (default: env)
Examples
asdf env nodeShow environment variables for the node shimasdf env python which pythonRun which inside the Python shim environmentasdf infoShow asdf system information (for debugging)
Common Options
- Outputs OS, shell, asdf version, and plugin information
Examples
asdf infoShow asdf environment informationasdf versionShow the installed asdf version
Common Options
- No args: Print the current asdf version
Examples
asdf versionShow the asdf versionasdf reshimRegenerate shims
Common Options
- <name> <version>: Specify plugin name and version
Examples
asdf reshim nodejs 20.11.0Regenerate Node.js 20.11.0 shimsasdf reshim python 3.12.0Regenerate shims for Python 3.12.0asdf shimversionsList plugins and versions that provide a command
Common Options
- <command>: Specify the command name
Examples
asdf shimversions nodeShow which plugins/versions provide the node commandasdf shimversions pythonShow which plugins/versions provide the python commandAbout asdf Commands
asdf Commands is a cheat sheet compiling essential asdf version manager commands. It covers plugin management, tool version setting (asdf set), and utility commands needed for development environment setup. Each command includes descriptions, common options, and practical examples that can be copied with one click.
Key Features
- Collection of 22 essential asdf commands (v0.18.x)
- Options and usage examples for each command
- Category filtering (Plugin, Tools, Utils)
- Real-time search functionality
- One-click command copy
Use Cases
- Looking up the asdf install / set command sequence when setting up a new Node.js or Python version for a project
- Checking how to use asdf set before committing a .tool-versions file to a monorepo shared by the whole team
- Referencing the asdf reshim command after running npm install -g or pip install to make new executables available in the shell
- Onboarding a new developer by sharing a single .tool-versions file instead of documenting separate nvm, pyenv, and rbenv setup steps
- Troubleshooting version conflicts on a CI server (GitHub Actions, CircleCI) by confirming the correct asdf install and plugin add commands
FAQ
How do I use asdf set?
asdf set writes a tool version to .tool-versions in the current directory. For example: asdf set nodejs 20.11.0. Use the -u flag to update .tool-versions in a parent directory, and -p to target only the current directory. The legacy asdf global, asdf local, and asdf shell commands were removed in v0.15 and replaced by asdf set.
Why do I need to run asdf reshim?
asdf routes commands through shim scripts. When you install a global CLI tool (npm install -g typescript, pip install black, gem install rubocop), asdf doesn't know about the new binary until you run asdf reshim to regenerate the shims.
Should I commit .tool-versions to my repo?
Yes. Committing .tool-versions means every developer who runs asdf install (no arguments) gets the exact same Node, Python, Ruby, and Go versions. It replaces the need to document version requirements in a README and eliminates 'works on my machine' version drift.
What's the difference between asdf where and asdf which?
asdf where nodejs 20.11.0 returns the installation directory (~/.asdf/installs/nodejs/20.11.0). asdf which node returns the full path to the active node executable. Use asdf which to debug PATH issues, and asdf where to find the installation root for manual inspection.
How do I install a specific Node.js or Python version with asdf?
Add the plugin first: asdf plugin add nodejs (or python). List available versions with asdf list all nodejs. Install with asdf install nodejs 20.11.0. Set the version with asdf set nodejs 20.11.0. The same pattern applies to every supported runtime.
What is the advantage of asdf over nvm, pyenv, or rbenv?
asdf manages every runtime — Node, Python, Ruby, Go, Java, Terraform, and hundreds more — with one tool and one .tool-versions file. Instead of remembering separate commands (nvm use, pyenv local, rbenv local), you use the same asdf set / install workflow for everything.
How do I update asdf itself?
Since v0.15, the asdf update command has been removed. Use your OS package manager (e.g., brew upgrade asdf on macOS, or apt upgrade on Linux) or download the latest binary from the asdf website.
