# Install Rudder CLI

[Rudder CLI](https://github.com/rudderlabs/rudder-iac) is a command-line interface tool designed to interact with RudderStack's services, facilitating tasks like CLI-based configuration, management, and deployment of Tracking Plans and Data Catalog. See [CLI-based Data Catalog and Tracking Plan Management]({{< ref "dev-tools/rudder-cli/data-catalog-and-tracking-plans/" >}}) for more information on this feature.

{{< warning >}}
This tool is currently under active development and there may be frequent changes and updates to it. 

Also, backward compatibility is not guaranteed at this stage.
{{< /warning >}}

## Install Rudder CLI

This section contains the Rudder CLI installation steps for the currently supported platforms.

### macOS

You can install the Rudder CLI on macOS devices depending on your chip configuration:

{{< tabs tabTotal="2" >}}
{{% tab tabName="Apple Silicon" %}}
```bash
curl -L https://github.com/rudderlabs/rudder-iac/releases/latest/download/rudder-cli_Darwin_arm64.tar.gz | tar -xz rudder-cli
sudo mv rudder-cli /usr/local/bin/
```
{{% /tab %}}
{{% tab tabName="Intel-based" %}}
```bash
curl -L https://github.com/rudderlabs/rudder-iac/releases/latest/download/rudder-cli_Darwin_x86_64.tar.gz | tar -xz rudder-cli
sudo mv rudder-cli /usr/local/bin/
```
{{% /tab %}}
{{< /tabs >}}

### Linux

Run the following command to install Rudder CLI on Linux:

```bash
curl -L https://github.com/rudderlabs/rudder-iac/releases/latest/download/rudder-cli_Linux_x86_64.tar.gz | tar -xz rudder-cli
sudo mv rudder-cli /usr/local/bin/
```

### Docker

You can run the CLI directly using Docker:

```bash
docker run rudderlabs/rudder-cli
```

If you need to persist your configuration or provide an external configuration file, you can mount your local configuration directory into the container. 

Assuming your configuration directory is located at `~/.rudder`, you can run the following command:

```bash
docker run -v ~/.rudder:/.rudder rudderlabs/rudder-cli
```

To run commands with local catalog files, mount your files directory and use the `-l` flag. For example:

```bash
docker run -v ~/.rudder:/.rudder -v ~/my-catalog:/catalog rudderlabs/rudder-cli tp apply --dry-run -l /catalog
```

The above command uses the access token from your local configuration file and the Catalog files from the `/catalog` directory.

You can also use the `RUDDERSTACK_ACCESS_TOKEN` environment variable to provide the access token, as shown:

```bash
docker run -v ~/my-catalog:/catalog -e RUDDERSTACK_ACCESS_TOKEN=your-access-token rudderlabs/rudder-cli tp apply --dry-run -l /catalog
```

## Build from source

{{< warning >}}
Make sure to have Go installed and set up in your environment before following the steps in this section.
{{< /warning >}}

Run the following commands in order:

```bash
git clone https://github.com/rudderlabs/rudder-iac.git
cd rudder-iac
make build
sudo mv bin/rudder-cli /usr/local/bin/
```

To build the Docker image locally:

```bash
make docker-build
```

<br />

