BVM is a simple and fast CLI tool to manage multiple versions of Bun, the all-in-one JavaScript runtime. Inspired by tools like nvm and rvm, BVM lets you easily install, switch, and manage different Bun versions.
- π₯ Install any version of Bun
- π Switch between installed versions seamlessly
- π¦ Uninstall versions you no longer need
- π List installed and remote Bun versions
- π― Interactive prompts for
install,use, anduninstall(powered by Clack) - π SHA-256 checksum verification before extracting downloads
- π§ Smart platform detection (Apple Silicon, Alpine/musl, AVX2 baseline, Rosetta)
- π Auto-configure shell environment (bash, zsh, fish)
- π Update notifications when a newer bvm release is available
- π§ Lightweight and fast β built with Node.js and TypeScript
- π Automatic symlink management for
bunandbunx - β¨ Command completions support
| Platform | Status | Tested |
|---|---|---|
| Linux | β Supported | β Tested on Ubuntu/Debian |
| macOS | β Supported | β Tested on M2 (Apple Silicon) |
| Windows | β Not supported | β Not supported yet |
Note: BVM supports macOS and Linux only. Windows support is not implemented.
# With npm
npm install -g bunvm
# With pnpm (recommended)
pnpm add -g bunvm
# With yarn
yarn global add bunvm
# With Bun
bun add -g bunvmAfter installation, you can use the bvm command from anywhere in your terminal.
git clone https://github.com/MrHacker26/bvm.git
cd bvm
pnpm install
pnpm build
pnpm linkOnce installed, you can use bvm from anywhere in your terminal:
bvm install [version] # Install a Bun version (alias: i)
bvm install latest # Install the latest Bun version
bvm use [version] # Switch to a Bun version (interactive if omitted)
bvm uninstall [version] # Remove an installed version (alias: u)
bvm current # Display currently activated version of Bun
bvm list # List installed Bun versions (alias: ls)
bvm remote # List available remote Bun versions (alias: r)
bvm upgrade # Show how to update bvm itself
bvm --help # Show help informationWhen run without a version argument in a terminal, install, use, and uninstall show interactive menus:
bvm useβ pick from installed versions (cursor starts on your current version)bvm installβ pick from remote releases (latest is pre-selected; showsinstalled/currenthints)bvm uninstallβ pick a version to remove, then confirm (warns if it's your active version)
In non-interactive environments (CI, pipes), a version argument is required:
bvm use 1.2.5 # works in scripts
bvm use # errors in CI β version requiredBVM checks for newer releases in the background (at most once a day) and shows a notification when an update is available. To see how to update:
bvm upgradeThis prints the update command for each package manager (npm, pnpm, yarn, bun) β it does not modify anything itself. To disable the update check, set NO_UPDATE_NOTIFIER=1.
# Install the latest Bun version
bvm install latest
# Install a specific Bun version
bvm install 1.0.12
bvm i 1.0.12 # alias
# Interactive install β pick from remote versions
bvm install
# Switch to a specific version
bvm use 1.0.12
# Interactive switch β pick from installed versions
bvm use
# List all installed versions
bvm list
bvm ls # alias
# See what versions are available remotely
bvm remote
bvm r # alias
# Remove an old version (with confirmation prompt)
bvm uninstall 1.0.11
bvm u 1.0.11 # alias
# Interactive uninstall β pick then confirm
bvm uninstall
# See how to update bvm itself
bvm upgrade- Node.js 20+
- pnpm (recommended) or npm
- Bun (for running tests)
# Clone the repository
git clone https://github.com/MrHacker26/bvm.git
cd bvm
# Install dependencies
pnpm install
# Build the project
pnpm build
# Link for local testing
pnpm link
# Run in development mode
pnpm devpnpm build- Build the project with tsuppnpm dev- Run in development mode with tsxpnpm test- Run unit tests with Bunpnpm clean- Clean build directorypnpm start- Run the built CLIpnpm format- Format code with Prettierpnpm lint- Lint code with ESLintpnpm lint:fix- Fix linting issues
Contributions are welcome! Please feel free to submit a Pull Request. Areas where help is needed:
- Testing on Linux (x64, ARM) and macOS (Intel)
- Bug fixes and improvements
- Documentation updates
MIT License - see LICENSE file for details.
- Inspired by nvm and rvm
- Built for the amazing Bun runtime
- Thanks to the TypeScript and Node.js communities
If you encounter any issues or have questions:
- Check the Issues page
- Create a new issue with details about your environment
- Include your platform, shell, and any error messages
Happy Bunning! π₯β¨