Runtimes

BitL installs language runtimes side by side and switches between them with one command โ€” no Homebrew, nvm or pyenv required.

How switching works

Each version is unpacked under ~/Library/Application Support/BitL/ (php-versions/, node-versions/, โ€ฆ). use repoints symlinks in BitL's bin directory. To have php, node, python3, go and flutter in your terminal follow those switches, put that directory first on your PATH โ€” once:

~/.zshrc
export PATH="$HOME/Library/Application Support/BitL/bin:$PATH"

Or let BitL do it: bitl php path --install. Every runtime works the same way โ€” list, install, use, uninstall, and a bare command to show the current version.

๐Ÿ˜ PHP

PHP 8.0 through 8.5 install as pre-built Apple Silicon binaries in seconds. 8.5 is the default for new installs.

bitl php                 # current version and whether FPM is availablebitl php available       # versions you can downloadbitl php install 8.3bitl php list            # installed versionsbitl php use 8.3         # switch globally: CLI + the default FPM poolbitl php extensions      # loaded extensions (or: bitl php extensions 8.2)bitl php pools           # running FPM pools and which sites use them

Switching is global โ€” every site without an isolation follows it. To pin one project, isolate it (version first, then domain):

bitl isolate 8.2 legacy-shop

Change the default version for new sites with bitl config set php-default 8.4. See also Xdebug and Composer.

๐Ÿ’š Node.js

Downloads official builds from nodejs.org. Give install a major version and it picks the newest release in that line; use accepts a major too, once it is installed. Switching also adds BitL's bin directory to your ~/.zshrc if it is missing.

bitl node available      # releases you can installbitl node install 22bitl node listbitl node use 22         # a major you installed, or an exact v22.11.0bitl node                # current version

Per-project Node version

isolate writes a .node-version file, which fnm, Volta, nodenv and most editors also respect.

cd ~/Sites/legacy-appbitl node isolate 18bitl node isolated       # what this directory usesbitl node unisolate

๐Ÿ Python

Uses standalone CPython builds, so nothing touches the system Python.

bitl python list --availablebitl python install 3.13.1bitl python use 3.13.1bitl python              # current versionย # a virtual environment with a specific versionbitl python venv .venv --python-version 3.12.8source .venv/bin/activate

Available: 3.13.1, 3.12.8, 3.11.11, 3.10.16. For notebooks, see Jupyter.

๐Ÿน Go

bitl go list --availablebitl go install 1.24.0bitl go use 1.24.0bitl go                  # current version

Available: 1.24.0, 1.23.5, 1.22.10, 1.21.13. use also links gofmt, and points bin/goroot at the active SDK so you can set GOROOT to a stable path.

๐ŸŽฏ Flutter & Dart

Official SDK archives from Google, on the stable, beta or dev channel.

bitl flutter list --availablebitl flutter install 3.24.5bitl flutter install 3.27.0-0.1.pre --channel betabitl flutter use 3.24.5bitl flutter 3.24.5      # shortcut for 'use'bitl flutter             # current versionbitl flutter doctor      # runs flutter doctor with the active SDKbitl flutter devices     # connected devices and running simulators

Running apps on simulators and emulators is covered in Mobile.

At a glance

RuntimeShow currentInstallSwitchPer-project
PHPbitl phpbitl php install 8.4bitl php use 8.4bitl isolate 8.2 site
Node.jsbitl nodebitl node install 22bitl node use 22bitl node isolate 18
Pythonbitl pythonbitl python install 3.13.1bitl python use 3.13.1bitl python venv .venv
Gobitl gobitl go install 1.24.0bitl go use 1.24.0โ€”
Flutterbitl flutterbitl flutter install 3.24.5bitl flutter use 3.24.5โ€”
Tip. The app has the same controls under Settings โ†’ Runtimes, and the โŒ˜K Quick Switcher can flip the global PHP version without leaving the keyboard.