Managing Tool Versions
Install, switch, and pin multiple versions per language or SDK across project directories.
Queries upstream indices directly without cloning heavy repositories:
$ avm node versions $ avm java versions $ avm android versions
Fetches official prebuilt distributions:
$ avm node install 22.14.0 $ avm java install 17 $ avm android install 34
# Pins in ./.avm.json for the current repository: $ avm node use 22.14.0 # Pins machine default in ~/.avm.json: $ avm node use 22.14.0 --global
Run a command with temporary tool versions, provider env and trusted project env. Missing runtimes install automatically; plugins must already be installed. Use --no-install to select installed versions only.
$ avm exec node@18 -- npm test $ avm x node@22 java@21 -- ./gradlew build $ avm run --with node@18 dev --port 3000
Project and global pins and lockfiles stay unchanged. Repeat --with for multiple tools and place it before alias arguments.
Install all selected tools without repinning. Lock fuzzy versions to exact releases and commit .avm.lock; frozen installs reject stale config and verify locked archive checksums.
$ avm install $ avm lock --platform linux_amd64,darwin_arm64,windows_amd64 $ avm install --frozen
Locking fetches metadata without installing runtimes. Upgrade the Node and Java plugins for lockfile support. Android and legacy asdf plugins currently support ordinary installs only.