asdf

asdf manages parallel versions of multiple developer tools (Node.js, Ruby, Python, Erlang, …) through a plugin ecosystem, exposing all of them behind a single CLI.

mpm targets the 0.16.0 Go rewrite and later: it calls the space-separated subcommands (asdf list all, asdf plugin add) that replaced the hyphenated forms (list-all, plugin-add) of the older Bash asdf, which is unsupported.

Note

asdf is plugin-driven: every tool the user can install is gated behind a plugin (asdf plugin add nodejs). mpm install does not auto-add plugins; the user is expected to register them first with asdf plugin add.

Note

Each (plugin, installed_version) pair is reported as a distinct package, so a tool installed at multiple versions yields multiple entries sharing the same ID.

Caution

mpm outdated only reports tools that have a currently-active version (marked with * in asdf list) different from their latest stable release. A tool installed without being activated through a .tool-versions file does not surface as outdated.

Platforms

  • 🐧 Linux

  • 🍎 macOS

Operations

Operation

Supported

Notes

installed

outdated

search

exact and extended search backfilled by mpm

install

upgrade

upgrade_all

backfilled by mpm

remove

sync

cleanup

Ecosystem

  • Accepted purl types: pkg:asdf

Usage

$ mpm --asdf installed
$ mpm --asdf search "query"
$ mpm --asdf upgrade --all
$ mpm install pkg:asdf/hello
$ mpm --dry-run --asdf upgrade --all

Every example above accepts --dry-run, which simulates the underlying manager calls without touching the system: the safe way to watch what mpm would do before trusting it.

Deselect the manager for a single run with --no-asdf, disable it from your configuration, or tune its invocation attributes with per-manager overrides.

Command line

  • CLI names, in lookup order: asdf

The version is probed by running:

$ asdf version
v0.19.0-83adfe6

and extracted with:

r"v?(?P<version>\d+\.\d+\.\d+)"

Privilege escalation

mpm runs this manager as the current user and never prepends sudo by default. Flip the policy for its privileged operations with --sudo or the per-manager sudo override.

See privilege escalation for the full policy.

Cooldown

State of asdf’s release-age gating, from the cooldown support table:

  • Status: ❌ None (runtime version manager)

With --cooldown set, mpm skips this manager’s install and upgrade operations rather than run them unguarded (fail-closed); --allow-unsupported-managers opts back in.

Reference traces

Raw native outputs captured in the manager source: the reference mpm’s parsers were written against. If you know asdf well and a transcript below looks wrong, or a newer release changed its output format, report it.

$ asdf list
nodejs
  18.20.4
 *20.10.0
ruby
 *3.2.0
$ asdf latest --all
nodejs    20.10.0    missing
ruby      3.3.0      missing