The base setup every (macOS) developer needs.
Workbench is kinda a package manager. We install simple stubs that install
on-demand the tools you need. eg. usr/local/bin/node is just a shell script
that installs node to your home directory† and then invokes it.
Workbench can run any version of the tools we support. You can control this via env:
$ WORKBENCH_NODE=^20 node --version
20.1.0Or you can activate project directories and then we read the keyfiles in that project to automatically determine versions:
$ cd my-project
$ cat package.json | jq -r '.engines.node'
20.1.0
$ node --version
22.10.0  # by default we run the latest version
$ workbench .
$ node --version
20.1.0  # now we run the version from the projectWe provide major language ecosystems and their essential companion tools and that is it.
node,npm,npxnpmandnpxare just stubs to installnpmandnpxvianode.
bundenopython,pip- We also install versioned stubs (eg. 
python3.9) pipis a proxy to installpipvia python
- We also install versioned stubs (eg. 
 uv,uvxuvxis—in our mind—essential for modern Python development.
rustc,cargo,rustup- We only operate via 
rustupthus bothrustcandcargoare in fact stubs that ensurerustuphas configured a toolchain before proxying to the rustup installed tool. Ifrustuphas not run we error. 
- We only operate via 
 rubyperlphpgolua,luarocks
For everything else use another package manager.
We only package a few things so we package them extremely well.
- Well configured out the box.
- We use sane defaults like making 
pip,npmetc. install to your home directory. - We ensure packages look in 
XDGplaces for configuration files. 
 - We use sane defaults like making 
 - Well optimized out the box.
- We pour over the packages looking for every optimization we can apply.
 - We build separate package for all the CPU architectures we support to ensure the versions of key tools you are using are as fast as humanly possible.
 
 - Max’d out
- All features enabled
 
 - Aware of macOS provided deps and not duping them
- But also aware which ones are now too old and providing them as necessary.
 
 
†
~/.local/pkgson *nix.
%LOCALAPPDATA%\pkgson Windows.