---
title: Install proto
---

import HeaderLabel from '@site/src/components/Docs/HeaderLabel';
import NextSteps from '@site/src/components/NextSteps';

<HeaderLabel text="1 min" />

The following guide can be used to install proto into your environment.

## Requirements

- Git - for fetching available versions/tags
- tar, unzip, gz, xz - for unpacking archives

```shell
# macOS
brew install git unzip gzip xz

# Ubuntu / Debian
apt-get install git unzip gzip xz-utils

# RHEL-based / Fedora
dnf install git unzip gzip xz
```

## Installing

The entirety of proto is packaged and shipped as 2 binaries. It works on _most_ operating systems,
and does not require any external dependencies. For convenience, we provide the following scripts to
download and install proto.

:::info

The install location can be customized with the `PROTO_HOME` environment variable. If not provided,
the default location is `~/.proto`.

:::

### Linux, macOS, WSL

In a terminal that supports Bash, run the following command. This will download and install proto,
then open an interactive prompt to complete the installation.

```shell
bash <(curl -fsSL https://moonrepo.dev/install/proto.sh)
```

For Fish shell, use process substitution with `psub` to execute the installer.

```shell
bash (curl -fsSL https://moonrepo.dev/install/proto.sh | psub)
```

Furthermore, the version of proto to install can be passed as an argument to the install script. We
also accept `--no-profile` to avoid modifying your shell profile, and `--yes` to avoid interactive
prompts.

```shell
bash <(curl -fsSL https://moonrepo.dev/install/proto.sh) 1.2.3 --yes
```

### Windows

In an _administrator_ Powershell or Windows Terminal, run the following command. This will download
and install proto, then open an interactive prompt to complete the installation.

```
irm https://moonrepo.dev/install/proto.ps1 | iex
```

You may also need to run the following command for shims to be executable:

```shell
Set-ExecutionPolicy RemoteSigned

# Without admin privileges
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
```

### Other

proto can also be downloaded and installed manually, by downloading an asset from
[https://github.com/moonrepo/proto/releases](https://github.com/moonrepo/proto/releases). Be sure to
rename the file after downloading, and apply the executable bit (`chmod +x`) on macOS and Linux.

## Upgrading

To upgrade proto, run the [`proto upgrade`](./commands/upgrade) command, or re-run the install
scripts above.

## Uninstalling

To uninstall proto, delete the `~/.proto` directory, and remove any `PROTO_HOME` references from
your shell profile.

## Canary releases

proto supports canary releases, which are built and published for every commit to our development
branches. These releases will include features and functionality that have not yet landed on master.
Canary releases are available as a
[GitHub prerelease](https://github.com/moonrepo/proto/releases/tag/canary) using the `canary` tag.

## Nightly releases

proto supports nightly releases, which are built and published once a day from the latest commit on
master. Nightly releases are available as a
[GitHub prerelease](https://github.com/moonrepo/proto/releases/tag/nightly) using the `nightly` tag.

## Next steps

<NextSteps
  links={[
    { icon: 'run-task', label: 'Choose a workflow', url: './workflows' },
    {
      icon: 'workspace-config',
      label: (
        <span>
          Learn about <code>.prototools</code>
        </span>
      ),
      url: './config',
    },
  ]}
/>
