Introducing proto, a next-generation toolchain manager!
We are proud to announce the launch of proto, a next-generation toolchain manager for all of your favorite programming languages.
proto is a Rust based multi-language toolchain manager that will download and install
tools by version, and immediately make them available on PATH
. proto is launching with initial
support for Bun, Deno, Node.js (and
npm, pnpm, yarn), and Go, with more languages on the way!
proto install node 18
proto install go 1.20
proto install deno 1.30
Unlike other version managers that pin their global binary to a default version, proto will
contextually detect an applicable version from the environment or the
language's ecosystem (like package.json
), ensuring the correct tool is always being ran.
# Will detect a version before running
bun run ./script.ts
Furthermore, with proto's .prototools
file, you can pin versions of all
required tools on a per-project or per-repository basis, allowing for near instant setup of
developer environments. Perfect for onboarding new developers!
node = "18.12.0"
yarn = "3.3.0"
# Install all the things!
proto use
And lastly, moon's toolchain is built on proto, so if you're using moon, you might as well use proto. This will enable a single toolchain for both tools (in v0.26)!
How to get started?
In a terminal that supports Bash, run:
curl -fsSL https://moonrepo.dev/install/proto.sh | bash
In Powershell or Windows Terminal, run:
irm https://moonrepo.dev/install/proto.ps1 | iex
Jump to the documentation for more information on getting started and available commands!
Why another version manager?
To start, proto powers moon's toolchain and integrated developer environment. We believed that moon's toolchain would be extremely beneficial for developers as a whole, and so we extracted proto out into a standalone Rust CLI and Rust crates that moon inherits.
Furthermore, we believe that requiring multiple ad-hoc version managers for all your languages, each with different workflows, CLI commands, and configuration files, is a poor developer experience.
Our goal is to unify all of these into a single performant interface. A toolchain manager is the next step in the version manager evolution.