Skip to content

Repository files navigation

BVM - Bun Version Manager

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.


🚀 Features

  • 📥 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, and uninstall (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 bun and bunx
  • ✨ Command completions support

🖥️ Platform 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.


📦 Installation

Install from npm

# With npm
npm install -g bunvm

# With pnpm (recommended)
pnpm add -g bunvm

# With yarn
yarn global add bunvm

# With Bun
bun add -g bunvm

After installation, you can use the bvm command from anywhere in your terminal.

Install from source

git clone https://github.com/MrHacker26/bvm.git
cd bvm
pnpm install
pnpm build
pnpm link

🛠️ Usage

Once 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 information

Interactive mode

When 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; shows installed / current hints)
  • 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 required

Updating bvm

BVM 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 upgrade

This 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.


📌 Examples

# 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

🛠️ Development

Prerequisites

  • Node.js 20+
  • pnpm (recommended) or npm
  • Bun (for running tests)

Setup

# 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 dev

Scripts

  • pnpm build - Build the project with tsup
  • pnpm dev - Run in development mode with tsx
  • pnpm test - Run unit tests with Bun
  • pnpm clean - Clean build directory
  • pnpm start - Run the built CLI
  • pnpm format - Format code with Prettier
  • pnpm lint - Lint code with ESLint
  • pnpm lint:fix - Fix linting issues

🤝 Contributing

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

📄 License

MIT License - see LICENSE file for details.


🙏 Acknowledgments

  • Inspired by nvm and rvm
  • Built for the amazing Bun runtime
  • Thanks to the TypeScript and Node.js communities

📞 Support

If you encounter any issues or have questions:

  1. Check the Issues page
  2. Create a new issue with details about your environment
  3. Include your platform, shell, and any error messages

Happy Bunning! 🥖✨

Releases

Packages

Used by

Contributors

Languages