What Is vfox? The Beginner's Guide to the Cross-Platform Version Manager (VersionFox, Explained)
CodexFuse Team · 2026-11-04T16:02:03.905Z · 9 min read min read
What Is vfox? The Beginner's Guide to the Cross-Platform Version Manager (VersionFox, Explained)
If you searched what is vfox and landed on pages about a cryptocurrency token, you were looking at the wrong vfox. This guide explains vfox — also known as VersionFox — a cross-platform version manager for SDKs and runtime environments. It is a single command-line tool that installs and switches between different versions of the tools you build with: Node.js, Python, Go, Rust, and dozens more. If you have ever needed Node 18 for one project and Node 20 for another on the same machine, vfox is the tool that makes that painless.
vfox is written in Go, runs natively on Windows, macOS, and Linux, and extends through a Lua plugin system. That plugin system is respected enough that mise, another popular version manager, runs vfox plugins as its own backends. The rest of this guide covers how vfox switches versions without shims, its three scopes, how to install it, and how it compares with asdf and mise.
What Is vfox, Exactly?
vfox (VersionFox) is a cross-platform, extendable version manager for software development kits and runtimes. The official README describes it as "a cross-platform version manager (similar to nvm, fvm, sdkman, asdf-vm, etc.), extendable via plugins," and the official docs call it "a cross-platform, extensible universal version manager that supports Windows (native) and Unix-like systems, enabling you to quickly install and switch development environments." Instead of learning one version manager per language — nvm for Node, pyenv for Python, sdkman for Java — you learn one set of commands and use it for every SDK.
The vfox explained in short: one tool, every language, three scopes. You add a plugin for a language, install the versions you need, and pick which version is active at the global, project, or current-shell-session level. When you switch projects, vfox can switch the active versions automatically.
How vfox Switches Versions: Symlinks, Not Shims
vfox switches versions by creating directory symlinks that point at the actual SDK installation directories, then placing those symlinked paths at the front of your PATH. The official quick-start puts it this way: "vfox creates directory symlinks in different scopes pointing to actual SDK installation directories, and adds these paths to the PATH environment variable in priority order, enabling version switching." This is the architectural point that separates vfox from asdf: asdf works through shims, lightweight wrapper scripts that intercept every command and redirect it to the correct version, while vfox points PATH directly at the chosen SDK's real binaries.
In concrete terms, selecting Node.js 20.9.0 for a project creates a symlink in $PWD/.vfox/sdks/nodejs that points at the real Node 20.9.0 installation directory, and inserts $PWD/.vfox/sdks/nodejs/bin at the front of PATH. Nothing intercepts your commands; the shell simply finds the right binary first because its directory is first in the path.
The Three Scopes: Project, Session, and Global
vfox manages versions at three scopes with a fixed priority order: Project > Session > Global > System. You choose the scope with a flag on the vfox use command — -p for project, -s for session, -g for global — and the highest-priority scope that pins a version wins.
| Scope | Command | Where the version is stored | Effective range |
|---|---|---|---|
| Project | vfox use -p | $PWD/.vfox/sdks | Current project directory |
| Session | vfox use -s | ~/.vfox/tmp/<pid>/sdks | Current shell session only |
| Global | vfox use -g | ~/.vfox/sdks | Everywhere, as the fallback |
Two platform defaults are worth memorizing. On Unix-like systems, vfox defaults to Session scope: a bare vfox use [email protected] is equivalent to vfox use -s, and the configuration is automatically cleaned up when you close the shell session. On Windows, where shell hooks do not work the same way, the default is Global scope, so vfox use behaves like vfox use -g. vfox is meant to be quiet infrastructure — the kind of thing you configure once in your terminal and forget, the same way a compositor like labwc is quiet infrastructure for a Wayland desktop.
vfox Install: How to Install vfox on Windows, macOS, and Linux
vfox is distributed as a single binary with no runtime dependencies. As of 2026-11-04, the current version is v1.0.13 (released 2026-10-17 per the GitHub releases API), and the project is licensed under the Apache 2.0 license. Install it with your platform's package manager, using the commands from the official quick-start:
# Windows scoop install vfox winget install vfox # macOS brew install vfox # Debian / Ubuntu echo "deb [trusted=yes lang=none] https://apt.fury.io/versionfox/ /" | sudo tee /etc/apt/sources.list.d/versionfox.list sudo apt-get update sudo apt-get install vfox # Or the universal install script curl -sSL https://raw.githubusercontent.com/version-fox/vfox/main/install.sh | bash
After installing, hook vfox into your shell so it can manage PATH per scope. The official README gives these one-liners — add the one for your shell and restart the terminal:
echo 'eval "$(vfox activate bash)"' >> ~/.bashrc echo 'eval "$(vfox activate zsh)"' >> ~/.zshrc echo 'vfox activate fish | source' >> ~/.config/fish/config.fish
If your development machine is a remote server rather than a laptop, the same binary and commands apply — vfox works identically on a VPS hosting instance as it does locally, since it is just one executable with a few directories under your home folder.
How to Use vfox: Your First Five Minutes
Here is the complete arc from a fresh install to a per-project Node.js version, using the official commands:
- See what is available. Run
vfox availableto list every plugin in the official registry — dozens of entries covering Node.js, Python, Go, Rust, Java, PHP, Ruby, Terraform, and more. - Add a plugin.
vfox add nodejsregisters the Node.js plugin with your vfox installation. You only do this once per tool. - Install a version.
vfox install [email protected]downloads and installs that exact version into vfox's SDK directory. - Activate it for the project.
vfox use -p [email protected]pins Node 21.5.0 to the current directory, writing the choice into the project's version file. - Verify and browse. Run
node --versionto confirm, and usevfox search nodejsany time you want to query which versions exist for a tool.
Step four is where the magic happens for teams: because vfox reads .tool-versions files (along with .nvmrc, .node-version, and .sdkmanrc), a project that already declares its versions can pick them up automatically, and asdf users migrating to vfox keep their existing config files working.
vfox Plugins: Dozens of SDKs, One Command
Every language vfox manages is backed by a Lua plugin that knows how to list that tool's versions and install them. The official plugin registry is a public JSON index; counting its entries live on 2026-11-04 returns 44 plugin entries, ranging from the obvious (nodejs, golang, python, rust, java) to niche entries like moonbit, vlang, and tinygo. Mixed in are official version-fox plugins and community-contributed ones, all installed with the same vfox add command.
Plugins are fetched from Git-hosted repositories, and the ecosystem has grown past vfox itself: the mise project runs vfox plugins directly as install backends, so a plugin you write or install for vfox also works inside mise's backend model. Writing your own plugin means writing a small Lua script with a few hook functions — list versions, download, install, verify — which is how the registry grew to cover tooling the core team never planned for.
vfox vs asdf vs mise: Which Version Manager Fits You?
The three tools overlap but solve slightly different problems. Here is the honest comparison using only what their own docs say:
| vfox | asdf | mise | |
|---|---|---|---|
| Core language | Go | Shell script at its core | Rust |
| How versions switch | Symlinks pointed at real SDK dirs, PATH ordered by scope | Shims: wrapper scripts that intercept each command | Shims plus a vfox plugin backend option |
| Plugin system | Lua plugins (44 registry entries counted 2026-11-04) | Plugin scripts per language | Built-in backends, can run vfox plugins |
| Native Windows | Yes, first-class | No (WSL needed) | Yes |
| Version file | .tool-versions plus .nvmrc, .node-version, .sdkmanrc | .tool-versions | .tool-versions and mise.toml |
| Relationship | mise consumes its plugins as backends | The incumbent vfox is most often compared with | Runs vfox plugins via the vfox: prefix |
The vfox vs mise question has an extra wrinkle: mise can consume vfox plugins directly as install backends, so choosing mise does not lock you out of the vfox plugin registry. The one-line decision guide: if native Windows support and a single cross-platform command set matter most, vfox is the direct answer; if you want the largest backend ecosystem with its own TOML config format, mise (which can still use vfox plugins) fits; if you are already deep in asdf, vfox reads your .tool-versions files, so trying it costs almost nothing.
Sources
- vfox official README — "a cross-platform version manager (similar to nvm, fvm, sdkman, asdf-vm, etc.), extendable via plugins" — https://github.com/version-fox/vfox (fetched 2026-11-04)
- vfox official quick-start guide — "vfox creates directory symlinks in different scopes pointing to actual SDK installation directories, and adds these paths to the PATH environment variable in priority order, enabling version switching"; scope table and priority "Project > Session > Global > System" — https://raw.githubusercontent.com/version-fox/vfox/main/docs/guides/quick-start.md (fetched 2026-11-04)
- vfox official site — "Supports Windows (non-WSL), Linux, macOS!"; "Support for existing version files .tool-versions, .nvmrc, .node-version, .sdkmanrc for smooth migration!" — https://vfox.dev (fetched 2026-11-04)
- Official vfox plugin registry JSON — 44 plugin entries counted live — https://version-fox.github.io/vfox-plugins (fetched 2026-11-04)
- GitHub releases API for version-fox/vfox — v1.0.13, published 2026-10-17 — https://api.github.com/repos/version-fox/vfox/releases/latest (fetched 2026-11-04)
- mise official docs, "vfox backend" — "The vfox backend runs vfox plugins: Lua plugins that list a tool's versions and install it." — https://mise.jdx.dev/dev-tools/backends/vfox.html (fetched 2026-11-04)
Frequently Asked Questions
Is vfox the same as the VFOX crypto token?
No. vfox (lowercase, "VersionFox") is a command-line tool that manages SDK and runtime versions for developers. VFOX is an unrelated cryptocurrency token from RFOX Finance, and a search for "what is vfox" mixes both together — this article is only about the developer tool.
Is vfox better than asdf?
They differ in architecture, not just speed. asdf intercepts commands through shims; vfox points PATH directly at real SDK directories via symlinks. vfox also supports native Windows and reads asdf's .tool-versions files, which makes switching easy to try without committing.
Does vfox work on Windows without WSL?
Yes. The official docs emphasize Windows (native) support as a core feature, alongside Unix-like systems. On Windows, the default version scope is Global rather than Session, because shell hooks work differently there.
What happens to my session-level versions when I close the terminal?
On Unix-like systems, versions set with vfox use (or -s) are session-scoped: they live under ~/.vfox/tmp/<pid>/sdks and are automatically cleaned up and destroyed when you close the shell session. Project and Global versions are unaffected.
Can vfox replace nvm?
Yes for the version-management part. vfox reads .nvmrc and .node-version files for smooth migration, and its nodejs plugin installs and switches Node versions the same way nvm does — with the bonus that the same tool can also manage your Python, Go, or Rust versions.

