This guide is the release-ready CLI reference for vex.
It is based on the current command surface exposed by vex --help and the clap definitions in src/cli/.
Use it when you want the full command map in one place without jumping between README sections.
- Tool specs use the form
tool@version, for examplenode@20,go@1.24, orpython@3.12.8. - The built-in tool names are
node,go,java,rust, andpython. vexsupports both project-local version files and global defaults in~/.vex/tool-versions.- Commands that support JSON output use
--json. - Use
vex help <command>orvex <command> --helpfor the in-terminal help view.
vex init
vex uninit
vex install
vex sync
vex use
vex relink
vex list
vex list-remote
vex current
vex globals
vex uninstall
vex env
vex local
vex global
vex lock
vex upgrade
vex outdated
vex prune
vex alias
vex exec
vex run
vex doctor
vex repair
vex self-update
vex tui
vex python
vex rust
Initialize ~/.vex, configure shell integration, or bootstrap a project template.
Usage:
vex init [--shell <shell>]
vex init --list-templates
vex init --template <template>
vex init --template <template> --dry-run
vex init --template <template> --add-onlyOptions:
--shell <shell>- valid values:
auto,zsh,bash,fish,skip
- valid values:
--template <template>- initialize the current directory with an official template
--list-templates- print the available built-in templates
--dry-run- preview template changes without writing files
--add-only- merge only safe files such as
.tool-versionsand.gitignore, then create missing starter files
- merge only safe files such as
Examples:
vex init --shell auto
vex init --list-templates
vex init --template rust-cli
vex init --template python-venv --add-onlyRemove the vex-managed shell hook block from your shell config.
Usage:
vex uninit
vex uninit --shell <shell>
vex uninit --shell <shell> --dry-runOptions:
--shell <shell>- valid values:
auto,zsh,bash,fish,nu
- valid values:
--dry-run- preview the shell config that would be cleaned
Notes:
vex uninitremoves the marker block written by currentvex init --shellruns.- It also removes legacy unmarked hook snippets from older installs.
- It does not delete
~/.vex, installed toolchains, version files, or project configuration.
Print the generated shell hook for auto-switching.
Usage:
vex env <shell>
vex env <shell> --exportsArguments:
<shell>zsh,bash,fish, ornu
Examples:
vex env zsh
vex env fish
vex env nuNotes:
vex env <shell>prints the long-lived shell hook you add to your shell config.vex env <shell> --exportsprints the current directory's resolved export/unset block and is primarily used internally by the shell hook.
Run health checks for the current installation.
The report includes core PATH/symlink checks, managed global CLI inventory, Maven/Gradle state, and active PATH conflicts from other tool managers that can shadow vex.
Usage:
vex doctor
vex doctor --json
vex doctor --verbose
vex doctor --repairOptions:
--json- print machine-readable diagnostics
--verbose- include extra provenance and captured-environment details in text output
--repair- delete dangling symlinks under
~/.vex/currentand~/.vex/bin, then run diagnostics
- delete dangling symlinks under
List global CLIs and build-tool state that can affect command resolution.
Usage:
vex globals
vex globals --verbose
vex globals npm --json
vex globals pip
vex globals go --json
vex globals cargo
vex globals maven
vex globals mvn
vex globals gradleThe inventory includes:
- shared npm globals from
~/.vex/npm/prefix/bin - Python base CLIs from
~/.vex/python/base/<version>/bin - Python user-base CLIs from
~/.vex/python/user/binwhen installed through pip's official--userpath - Go tools from
~/.vex/go/bin - Cargo-installed tools from
~/.vex/cargo/bin - external
mvnandgradleCLIs found on PATH - Maven and Gradle build-tool state under
~/.m2and~/.gradle
Each entry includes its path, source kind, and the active vex version source when a matching toolchain is active. For Node, npm globals are a shared vex-managed user-level CLI pool, not a separate prefix per Node version.
Supported filters are all, node, npm, python, pip, go, rust, cargo, java, maven, mvn, and gradle.
Preview or apply safe legacy home-directory migrations into ~/.vex.
Usage:
vex repair migrate-home
vex repair migrate-home --tool <tool>
vex repair migrate-home --applyExamples:
vex repair migrate-home
vex repair migrate-home --tool rust
vex repair migrate-home --applyInstall one or more tool specs, or install from version files when no spec is provided.
Usage:
vex install [spec...]
vex install --from <source>
vex install --frozenOptions:
--no-switch- install without automatically activating the new version
--force- reinstall even if the version already exists
--from <source>- install from a version file,
vex-config.toml, HTTPS URL, or Git repository
- install from a version file,
--frozen- require
.tool-versions.lockand fail if the lockfile is missing or out of sync
- require
--offline- use only cached metadata and archives
Examples:
vex install node@20
vex install node@20 go@1.24
vex install python@3.12 --no-switch
vex install node@20 --force
vex install --from vex-config.toml
vex install --frozen
vex install node@20 --offlineInstall missing versions from the current managed context.
Usage:
vex sync
vex sync --from <source>
vex sync --frozenOptions:
--from <source>- sync from a version file,
vex-config.toml, HTTPS URL, or Git repository
- sync from a version file,
--frozen- strictly enforce
.tool-versions.lock
- strictly enforce
--offline- use only cached data
Examples:
vex sync
vex sync --from https://company.example/vex-config.toml
vex sync --frozen
vex sync --offlineSwitch the current active version for a tool, or auto-resolve from version files.
Usage:
vex use <spec>
vex use --autoOptions:
--auto- read version files such as
.tool-versions,.node-version, or.python-version
- read version files such as
Examples:
vex use node@22
vex use python@3.12
vex use --autoRebuild managed binary links for the active toolchain.
Usage:
vex relink <tool>Notes:
- currently only
nodeis supported - use this only when an executable appears inside the active Node toolchain's
bin - shared npm globals installed into
~/.vex/npm/prefix/binare already on PATH and do not need relinking - it only rebuilds links under
~/.vex/bin; it does not install packages or change shell configuration - project-local
node_modules/.binis preferred automatically when Node is active, so local CLIs win over shared npm globals in shell hooks,vex exec, andvex run
Examples:
vex relink nodeWrite a tool pin into the current directory's .tool-versions.
Usage:
vex local <spec>Example:
vex local node@20.11.0Version discovery also understands common language-specific files. Rust projects can
use .rust-toolchain, rust-toolchain, .rust-toolchain.toml, or
rust-toolchain.toml; TOML files read [toolchain].channel.
Write a global default version into ~/.vex/tool-versions.
Usage:
vex global <spec>Example:
vex global go@1.24Remove an installed toolchain version.
Usage:
vex uninstall <spec>Example:
vex uninstall node@20.11.0Notes:
- matching global aliases in
~/.vex/aliases.tomlare removed automatically - matching global pins in
~/.vex/tool-versionsare removed automatically - project
.tool-versionsfiles are not edited; vex warns if the current project still pins the removed version
Manage official Rust targets and components for the active Rust toolchain.
Usage:
vex rust target list
vex rust target add <name>...
vex rust target remove <name>...
vex rust component list
vex rust component add <name>...
vex rust component remove <name>...Examples:
vex rust target add aarch64-apple-ios aarch64-apple-ios-sim
vex rust component add rust-srcGenerate .tool-versions.lock from the current managed context.
Usage:
vex lockExample:
vex lockList locally installed versions for one tool.
Usage:
vex list <tool>
vex list <tool> --jsonExample:
vex list node
vex list python --jsonList available upstream versions.
Usage:
vex list-remote <tool>
vex list-remote <tool> --filter <filter>Options:
--filter,-f- valid values:
all,lts,major,latest
- valid values:
--no-cache- bypass the remote-version cache
--offline- use only cached remote data
--json- print machine-readable output
For Python, the latest and major filters prefer bugfix/security releases over feature or prerelease assets when both are present.
Examples:
vex list-remote node
vex list-remote node --filter lts
vex list-remote node --filter major --no-cache
vex list-remote python --json
vex list-remote node --offlineShow active versions in the current environment.
Usage:
vex current
vex current --jsonInstall and switch to the latest version of one tool, or upgrade the whole managed context.
Usage:
vex upgrade <tool>
vex upgrade --allOptions:
--all- upgrade every managed tool in the current context
Examples:
vex upgrade node
vex upgrade --allShow which managed tools are behind the latest available version.
Usage:
vex outdated
vex outdated <tool>
vex outdated --jsonExamples:
vex outdated
vex outdated python
vex outdated --jsonRemove unused caches, stale locks, and unreferenced toolchains.
Usage:
vex prune
vex prune --dry-runOptions:
--dry-run- preview removals without deleting anything
Alias:
vex gc- exact alias for
vex prune
- exact alias for
Examples:
vex prune --dry-run
vex gcvex alias is a command group. There is no vex alias <tool> shortcut.
Create a user-defined alias for one tool version.
Usage:
vex alias set <tool> <alias> <version> [--project]Options:
--project- store the alias in
.vex.tomlinstead of~/.vex/aliases.toml
- store the alias in
Examples:
vex alias set node production 20.11.0
vex alias set node lts-current 20.11.0 --projectList aliases globally, per project, or for one tool.
Usage:
vex alias list
vex alias list [tool]Options:
--project- show only project aliases
--global- show only global aliases
Examples:
vex alias list
vex alias list node
vex alias list --projectRemove an alias.
Usage:
vex alias delete <tool> <alias> [--project]Examples:
vex alias delete node production
vex alias delete node lts-current --projectRun one command inside the resolved vex environment without changing global symlinks.
Usage:
vex exec -- <command> [args...]Examples:
vex exec -- node -v
vex exec -- python -m pytest
vex exec -- cargo testRun a named task from [commands] in .vex.toml.
Usage:
vex run <task> [args...]Examples:
vex run test
vex run lint
vex run dev -- --host 0.0.0.0vex python currently accepts a single subcommand word rather than nested clap subcommands.
Supported values:
init- create
.venvusing the activevex-managed Python and record that version in.tool-versions
- create
freeze- run
pip freezeand writerequirements.lock
- run
sync- create
.venvif needed and restore dependencies fromrequirements.lock
- create
base- manage the active Python base environment for user-level Python CLIs
vex python base accepts these nested forms:
vex python base- create the active version's base environment if needed
vex python base path- print the active version's base environment path
vex python base pip <args...>- run
pipinside the active version's base environment
- run
vex python base freeze- write the base environment package set to
~/.vex/python/base/<version>/requirements.lock
- write the base environment package set to
vex python base sync- restore the base environment from that lockfile
Usage:
vex python base
vex python base pip install kaggle
vex python init
vex python freeze
vex python syncRecommended workflow:
vex install python@3.12
vex use python@3.12
vex python base pip install kaggle
cd my-project
vex python init
pip install requests flask
vex python freeze
vex python syncThe Python base environment is for global CLI tools. Project .venv environments stay separate: when the shell hook activates .venv, the base environment's bin directory is hidden from PATH so base-installed tools and packages do not leak into the project.
Launch the interactive terminal dashboard.
Usage:
vex tuiNotes:
- requires an interactive terminal
- intended for current-version overview, health warnings, disk usage, and quick actions
Download and install the latest published vex release for the current architecture.
Usage:
vex self-updateUse any of these when you want the built-in CLI help:
vex --help
vex help
vex help install
vex install --help
vex alias --help