Skip documentation navigation
Versions (Browse, Install, Pin)
Docs/Usage/Versions (Browse, Install, Pin)

Managing Tool Versions

Install, switch, and pin multiple versions per language or SDK across project directories.

1. Browse Available Releases

Queries upstream indices directly without cloning heavy repositories:

$ avm node versions
$ avm java versions
$ avm android versions
2. Install Exact or Major Versions

Fetches official prebuilt distributions:

$ avm node install 22.14.0
$ avm java install 17
$ avm android install 34
3. Pin Local vs Global
# 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
4. Try a Version Without Changing Pins

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.

Reproducible Installs for Teams and CI

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.