Skip to main content

Supported tools

The following tools are supported in proto's toolchain. Additional tools can be supported through plugins.


Bun (bun) is an all-in-one runtime and toolset for JavaScript and TypeScript, powered by Zig and Webkit.

Global binaries

  • Installs to ~/.bun/bin.


Deno (deno) is a secure runtime for JavaScript and TypeScript, powered by Rust and Chrome's V8 engine.

Global binaries

  • Installs to DENO_INSTALL_ROOT or ~/.deno/bin.

Detection sources


Go (go) is a simple, secure, and fast systems language.

Post-install hook

After installation, we'll inject a GOBIN environment variable into your shell, pointing to ~/go/bin, if it does not already exist. This variable will be used to locate Go binaries across all installed versions. This functionality can be skipped by passing --no-gobin during installation.

$ proto install go -- --no-gobin

Global binaries

  • Installs to GOBIN or ~/go/bin.

Detection sources


Node.js (node) is a JavaScript runtime built on Chrome's V8 engine.

Post-install hook

After installation, the version of npm that came bundled with Node.js will also be installed. This functionality can be skipped by passing --no-bundled-npm during installation.

$ proto install node -- --no-bundled-npm

Global binaries

  • Installs to ~/.proto/tools/node/globals/bin.

Detection sources


When parsing engines, explicit versions (1.2.3, =1.2.3) will be used as-is, but requirements/ranges (^1.2.3, >=1.2.3) will scan ~/.proto/tools/node for an applicable match.

npm, pnpm, yarn

proto supports all popular Node.js package managers: npm, pnpm, yarn.

Global binaries

  • Installs to ~/.proto/tools/node/globals/bin.
  • Internally all package managers install globals with npm into the location above.

Detection sources

  • The packageManager field in package.json.
  • The engines field in package.json (same notice above applies).


The node-gyp binary is created alongside the npm tool, and cannot be installed manually.


Corepack is not supported by proto, and will never be. Use proto use instead, which is a far more poweful alternative.


Rust (rust) is blazingly fast and memory-efficient systems language.


If you're familiar with Rust, you most likely use rustup, a Rust specific toolchain manager. This overlaps heavily with how proto works, so instead of proto reinventing the wheel here, we simply call rustup under the hood. Because of this, be aware of the following when using Rust in proto:

  • Rust and Cargo must be pre-installed on your system.
  • The ~/.cargo/bin directory must be in your PATH.
  • We don't install Rust to ~/.proto/tools/rust but instead reference ~/.rustup/toolchains.
  • We don't create shims for cargo, rustup, etc.

Global binaries

  • Installs to CARGO_INSTALL_ROOT or ~/.cargo/bin.

Detection sources

Since we don't create shims for cargo, rustup, etc, we can't detect Rust versions at runtime. However, rustup supports this as well through the rust-toolchain.toml file. We suggest using this file.

profile = "default"
channel = "1.68.0"