---
title: "Installation"
description: "Where to get CAT CLI on Windows, Linux and macOS, how to update it and how to remove it"
url: "https://docs.justcat.it/reference/cat-cli/installation/"
---
# Installation


CAT CLI has no dependency on PowerShell and no dependency on a separately installed .NET runtime. That makes it the tool to reach for on machines where PowerShell 7 cannot be installed, or where a runtime cannot be managed.

Pick your platform below. In every command, `<version>` is the version you are installing — the [Releases](https://docs.justcat.it/releases/ "Releases") page names the current one and carries every file with its SHA256 hash.

## Windows

### Where to get it

There are two equal routes; pick the one that fits the machine.

**Download the installer from the [Releases](https://docs.justcat.it/releases/ "Releases") page of this site.** The page always carries the latest `cat-cli-<version>-setup.exe` with its SHA256 hash; the installer is digitally signed and is a plain next-next-next wizard with nothing to configure. This is the route for machines without WinGet, without access to the WinGet source, for a download you want to keep and redistribute internally, or simply when you prefer a file you can inspect and hash before running it.

To check the download, `certutil -hashfile cat-cli-<version>-setup.exe SHA256` prints its hash; it must match the one shown on the Releases page.

**Or install from WinGet:**

```
winget install DataTools.CATCLI
```

Both routes install the same program to the same place and register it the same way; `winget upgrade` and the installer can be used interchangeably on one machine.

### Prerequisites

Windows 10 or later, or Windows Server 2016 or later.

The Microsoft Visual C++ Redistributable (x64) must be present — it is a common component, so it usually already is, and CAT CLI 3.0 and later bundles it in the installer. Microsoft publishes it at <https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist>.

### Verify the installation

```
catcli --version
```

The command prints the installed version. `catcli` resolves from any directory once the installation has put it on `PATH`; a terminal opened before the installation has to be restarted to see it.

### Update

Download the newer installer from the [Releases](https://docs.justcat.it/releases/ "Releases") page and run it over the existing installation, or, with WinGet:

```
winget upgrade DataTools.CATCLI
```

Pin the version in automated processes: install one specific version and keep pipelines on it, rather than picking up whatever is current. Keeping the downloaded installer is the simplest way to reinstall exactly that version elsewhere.

### Uninstall

Remove CAT CLI as any other Windows application — **Settings → Apps → Installed apps → CAT CLI → Uninstall** — or with WinGet:

```
winget uninstall DataTools.CATCLI
```

## Linux

### Where to get it

CAT CLI ships as a `tar.gz` archive per architecture: `cat-cli-<version>-linux-x64.tar.gz` and `cat-cli-<version>-linux-arm64.tar.gz`. Run `uname -m` to see which one you need — `x86_64` means x64, `aarch64` or `arm64` means arm64. The x64 archive is about 88 MB.

Download it, verify the hash, unpack it into `/opt/catcli` and link the binary onto `PATH`. The lines are chained with `&&`, so a failed hash check stops the sequence before anything is unpacked. The machine needs `curl` and ICU first — see *Prerequisites* below. Drop each `sudo` if you are already root, as in a container:

```bash
curl -fLO https://docs.justcat.it/releases/cat-cli-<version>-linux-x64.tar.gz && \
curl -fLO https://docs.justcat.it/releases/cat-cli-<version>-linux-x64.tar.gz.sha256 && \
sha256sum -c cat-cli-<version>-linux-x64.tar.gz.sha256 && \
sudo rm -rf /opt/catcli && \
sudo mkdir -p /opt/catcli && \
sudo tar -xzf cat-cli-<version>-linux-x64.tar.gz -C /opt/catcli && \
sudo ln -sfn /opt/catcli/catcli /usr/local/bin/catcli
```

Without root, install into your home directory instead:

```bash
curl -fLO https://docs.justcat.it/releases/cat-cli-<version>-linux-x64.tar.gz && \
curl -fLO https://docs.justcat.it/releases/cat-cli-<version>-linux-x64.tar.gz.sha256 && \
sha256sum -c cat-cli-<version>-linux-x64.tar.gz.sha256 && \
rm -rf ~/.local/opt/catcli && \
mkdir -p ~/.local/opt/catcli ~/.local/bin && \
tar -xzf cat-cli-<version>-linux-x64.tar.gz -C ~/.local/opt/catcli && \
ln -sfn ~/.local/opt/catcli/catcli ~/.local/bin/catcli
```

`~/.local/bin` is on `PATH` on most distributions from your next login; for the terminal you are in, run `export PATH="$HOME/.local/bin:$PATH"`.

Homebrew works on Linux too, and installs the same archive — see the macOS section for `brew install justcatit/cat/catcli`.

### Prerequisites

An x64 or arm64 machine and a glibc-based distribution (Ubuntu, Debian, RHEL, Fedora, SUSE and their relatives). Two packages have to be there before the install block runs:

* **`curl`** (with `ca-certificates`) downloads the archive.
* **ICU** — the Unicode library CAT compares and formats text and dates through. Without it `catcli` stops at startup with *Couldn't find a valid ICU package installed on the system*.

**`libgdiplus`** is needed only if the project writes an **Excel output**; nothing else uses it.

Desktop distributions have all of these already. A server or a minimal container image usually does not — install them first:


**Ubuntu / Debian**


```bash
sudo apt-get update && sudo apt-get install -y curl ca-certificates libicu-dev
```

`libicu-dev` brings in the ICU library your release ships (`libicu74` on Ubuntu 24.04, `libicu72` on Debian 12) without you having to know its versioned name. For Excel output add `libgdiplus`.


**Fedora / RHEL**


```bash
sudo dnf install -y curl ca-certificates libicu
```

For Excel output add `libgdiplus`.


**Other distributions**


Install the package that provides the ICU library — `libicu` on openSUSE (`zypper install libicu`), `icu` on Arch (`pacman -S icu`) — plus `curl`, and `libgdiplus` for Excel output.

Alpine and other musl-based distributions are not supported: CAT CLI is built against glibc.




### Verify the installation

```bash
catcli --version
catcli instance -s
```

The first prints the version; the second shows this installation, with `Platform` reading `Linux`.

### Update

Run the install block above with the new version. It replaces `/opt/catcli` (or `~/.local/opt/catcli`) and the symlink keeps working. Extracting the new archive *over* the old folder is not enough: `tar` merges, so a file the new version no longer ships would stay behind.

Pin the version in automated processes: install one specific version and keep pipelines on it, rather than picking up whatever is current.

### Uninstall

```bash
sudo rm -f /usr/local/bin/catcli && sudo rm -rf /opt/catcli
```

For a home-directory installation: `rm -f ~/.local/bin/catcli && rm -rf ~/.local/opt/catcli`.

## macOS

**macOS is a preview.** The macOS build comes from the same source as the Windows and Linux ones, but we do not yet run it on a Mac ourselves before a release — reports of anything that does not work are very welcome.

### Where to get it

**Homebrew is the route to take.** The formula lives in our own tap:

```bash
brew install justcatit/cat/catcli
```

Homebrew downloads the archive for your chip, checks its hash and puts `catcli` on `PATH`. Nothing it installs is quarantined, so there is no Gatekeeper dialog.

**Without Homebrew**, take the archive for your chip — `cat-cli-<version>-osx-arm64.tar.gz` for Apple silicon (M1 and later), `cat-cli-<version>-osx-x64.tar.gz` for an Intel Mac; the Apple menu → *About This Mac* names the chip:

```bash
curl -fLO https://docs.justcat.it/releases/cat-cli-<version>-osx-arm64.tar.gz && \
curl -fLO https://docs.justcat.it/releases/cat-cli-<version>-osx-arm64.tar.gz.sha256 && \
shasum -a 256 -c cat-cli-<version>-osx-arm64.tar.gz.sha256 && \
sudo rm -rf /opt/catcli && \
sudo mkdir -p /opt/catcli /usr/local/bin && \
sudo tar -xzf cat-cli-<version>-osx-arm64.tar.gz -C /opt/catcli && \
sudo ln -sfn /opt/catcli/catcli /usr/local/bin/catcli
```

Download with `curl` rather than with the browser. CAT CLI carries no Apple developer signature, and macOS quarantines whatever a browser saved; a file `curl` saved is not quarantined, and neither is anything Homebrew installed. If a browser download did end up in `/opt/catcli` and `catcli` is blocked at launch, clear the flag from the whole folder:

```bash
sudo xattr -dr com.apple.quarantine /opt/catcli
```

### Prerequisites

macOS on Apple silicon or on Intel. **`libgdiplus`** is needed only if the project writes an **Excel output**:

```bash
brew install mono-libgdiplus
```

### Verify the installation

```bash
catcli --version
catcli instance -s
```

The first prints the version; the second shows this installation, with `Platform` reading `macOS`.

### Update

```bash
brew upgrade catcli
```

Without Homebrew, run the install block above with the new version — it replaces `/opt/catcli`. If Homebrew installed CAT CLI, stay with `brew upgrade`: on an Intel Mac the block would overwrite Homebrew's own symlink in `/usr/local/bin`.

### Uninstall

```bash
brew uninstall catcli
```

Without Homebrew: `sudo rm -f /usr/local/bin/catcli && sudo rm -rf /opt/catcli`.

## What differs off Windows

The same program, the same project files, the same results. Two things are not there on Linux and macOS:

* The providers built on Windows components — `Dax@1`, `Dax@2`, `PowerBI@1`, `PowerBI@2`, `CsvOleDB@1`, `ExcelOleDB@1` — are **Windows-only**. Databases, CSV and YAML files, the JSON/YAML/JUnit/TRX and database outputs — all there.
* The **Excel output** needs `libgdiplus` installed (see the prerequisites above).

File names are also case-sensitive on Linux, and on macOS depending on the volume: a `*.cat.yaml` project file must be spelled with that case.

## Providers that need extra software

Some data source providers need additional software installed on the machine. The requirement belongs to the provider, not to CAT CLI — each provider page states what it needs, and the [Providers overview](https://docs.justcat.it/reference/data-sources/providers/overview/ "Providers overview") marks which providers need a driver.

Uninstalling CAT CLI removes the tool only. Project files, test definitions and results stay where they are.

