Get Help

Installation

CAT CLI is a self-contained executable — it ships with every runtime it needs. It runs on Windows, Linux and macOS.

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 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 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 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:

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:

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:

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.

sudo dnf install -y curl ca-certificates libicu

For Excel output add libgdiplus.

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

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

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:

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:

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:

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:

brew install mono-libgdiplus

Verify the installation

catcli --version
catcli instance -s

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

Update

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

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 marks which providers need a driver.

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