id = "proto" name = "proto" homepage = "https://moonrepo.dev/proto" description = "A pluggable multi-language version manager." executables = ["proto"] [dotfiles] # proto's official configuration docs list ~/.proto/.prototools and # ~/.prototools as user config. The migration note says the older # ~/.proto/config.toml was removed in v0.24 and its functionality moved to # .prototools, so it is intentionally not included. # https://moonrepo.dev/docs/proto/config # https://moonrepo.dev/blog/proto-v0.24 paths = ["~/.proto/.prototools", "~/.prototools"] exclude = [] secret = [] side_effect = false [commands] format = 1 label = "proto" description = "Install one tool with proto install. Other subcommands and post-install hook arguments are not covered." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = false, short_bundles = false } [[commands.subcommand]] path = ["install"] label = "Install a tool" description = "Install a tool at a version. Without a version it uses the pinned one in .prototools, or latest." [[commands.subcommand.source]] id = "docs" kind = "manual" url = "https://moonrepo.dev/docs/proto/commands/install" revision = "2026-10-27" evidence = """ $ proto install deno $ proto install deno 1.31 $ proto install deno canary $ proto install bun --pin [tool] - Type of tool. [version] - Version of tool. Defaults to a pinned version in .prototools or "latest". --force - Force install, even if already installed. --build - Build from source if available. --no-build - Download a pre-built if available. --pin - Pin the resolved version and create a symlink in ~/.proto/bin """ [[commands.subcommand.field]] id = "tool" label = "Tool" description = "For example deno, bun, node, go." type = "string" position = 0 sources = ["docs"] [[commands.subcommand.field]] id = "version" label = "Version" description = "For example 1.31 or canary. Leave empty for the pinned version or latest." type = "string" position = 1 sources = ["docs"] [[commands.subcommand.field]] id = "force" label = "Force reinstall" type = "boolean" option = ["--force"] effect = "overwrite" sources = ["docs"] [[commands.subcommand.field]] id = "build" label = "Build from source" type = "boolean" option = ["--build"] sources = ["docs"] [[commands.subcommand.field]] id = "no_build" label = "Use a pre-built download" type = "boolean" option = ["--no-build"] sources = ["docs"] [[commands.subcommand.field]] id = "pin" label = "Pin the version" type = "boolean" option = ["--pin"] sources = ["docs"] [[commands.subcommand.task]] id = "install_pinned" label = "Install and pin" fields = ["tool", "version", "pin"] required = ["tool"] set = { pin = [true] } [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["tool", "version", "pin"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["force", "build", "no_build"]