asdf is a CLI tool that can manage multiple language runtime versions on a per-project basis. All tool version definitions are contained within one file (.tool-versions) which you can check in your project's Git repository to share with your team, ensuring everyone is using the exact same versions of tools. It is like gvm, nvm, rbenv & pyenv (and more) all in one! Simply install your language's plugin! Before you can use asdf, you'll need to configure your shell. If you use Bash, add the following to ~/.bash_profile (required): export PATH="${ASDF_DATA_DIR:-$HOME/.asdf}/shims:$PATH" If ou use ZSH, add the following to ~/.zshrc (required): export PATH="${ASDF_DATA_DIR:-$HOME/.asdf}/shims:$PATH" Most users DO NOT need to customize the location that asdf writes plugin, install, and shim data to. However, if $HOME/.asdf isn't the directory you want asdf writing to, you can change it. Specify the directory by exporting a variable named ASDF_DATA_DIR in your shell's RC file: export ASDF_DATA_DIR="/your/custom/data/dir" To setup your language's plugin, follow the getting started guide. A offline version is available on: /usr/doc/asdf-$VERSION/guide/getting-started.md