Installation

Pre-built binaries come in two flavors: stable releases cut from vX.Y.Z tags, and a rolling development-snapshot pre-release rebuilt on every push to development. Each build ships Windows, Linux, and macOS in both amd64 and arm64. See RELEASING.md for how releases are produced and verified.

Download from the releases page

Assets are named kuberoutectl_<version>_<os>_<arch>.<ext>.tar.gz for Linux and macOS, .zip for Windows.

Not sure which architecture you need? Run uname -mx86_64amd64, aarch64/arm64arm64. On Windows, check Settings → System → About → System type.

Prefer to build it yourself? See Building from source.

Choosing an install method

Method Best when Trade-off
Package manager (Homebrew, Scoop, .deb/.rpm/.apk) you want install + upgrade handled for you Homebrew/Scoop need a published stable release (see Troubleshooting)
Direct download (.tar.gz / .zip) you want a single binary with no package manager, or you’re on a pre-release you upgrade manually

Both install the same binaries from the same tagged release. If a package manager command fails, jump to Troubleshooting.

macOS (Homebrew)

The simplest path on macOS — installs and updates via brew, and handles the unsigned-binary quarantine for you (no manual xattr step):

brew install ymedlop/tap/kuberoutectl
kuberoutectl version

brew upgrade kuberoutectl picks up new releases. Prefer a manual download? Use the cross-platform instructions below.

Linux (apt — Debian/Ubuntu)

The simplest path on Debian/Ubuntu — a signed Cloudsmith apt repository, so apt upgrade picks up new releases:

curl -1sLf 'https://dl.cloudsmith.io/public/ymedlop/kuberoutectl/setup.deb.sh' | sudo bash
sudo apt install kuberoutectl
kuberoutectl version

The setup.deb.sh script adds the repo and imports its signing key. Prefer a manual package or need .rpm/.apk? See below.

Linux (packages)

Each release ships .deb, .rpm, and .apk packages (amd64 + arm64) as release assets. Download the one for your distro and arch, then:

sudo dpkg -i kuberoutectl_*_amd64.deb          # Debian / Ubuntu
sudo rpm -i  kuberoutectl_*_amd64.rpm           # Fedora / RHEL / openSUSE
sudo apk add --allow-untrusted kuberoutectl_*_amd64.apk   # Alpine
kuberoutectl version

The binary lands on your PATH at /usr/bin/kuberoutectl. Packages are unsigned, so apk needs --allow-untrusted.

Linux and macOS (manual)

Download the asset matching your OS (linux | darwin) and arch (amd64 | arm64) from the releases page, then, from the folder where it landed:

tar -xzf kuberoutectl_*_linux_amd64.tar.gz      # adjust os/arch to match
chmod +x kuberoutectl
sudo mv kuberoutectl /usr/local/bin/             # or any dir on your PATH
kuberoutectl version

On macOS the binary is unsigned, so Gatekeeper quarantines it on first run. Clear the quarantine flag once after extracting:

xattr -d com.apple.quarantine ./kuberoutectl    # or: right-click → Open

Windows (Scoop)

The simplest path on Windows — installs and updates via Scoop:

scoop bucket add ymedlop https://github.com/ymedlop/scoop-bucket
scoop install kuberoutectl
kuberoutectl version

scoop update kuberoutectl picks up new releases. Prefer a manual download? See below.

Windows (manual)

Download the ..._windows_<arch>.zip asset, extract it, and run from PowerShell:

Expand-Archive kuberoutectl_*_windows_amd64.zip -DestinationPath kuberoutectl
.\kuberoutectl\kuberoutectl.exe version

Move kuberoutectl.exe somewhere on your PATH to call it from anywhere.

SmartScreen may warn about the unsigned binary — choose More info → Run anyway.

Verify the download (optional)

Each release includes checksums.txt:

sha256sum -c checksums.txt          # Linux
shasum -a 256 -c checksums.txt      # macOS
Get-FileHash .\kuberoutectl_*.zip -Algorithm SHA256   # Windows (compare to checksums.txt)

Verify the installed version

Confirm you’re running the build you intended — kuberoutectl version prints the version baked into the binary at release time, matching the release tag (without its leading v, like the archive names above):

kuberoutectl version
# kuberoutectl 1.2.3 (commit abc1234, built 2026-01-01T00:00:00Z)

If it reports an older version than you installed, an earlier binary is shadowing it on your PATH — see Troubleshooting.

Troubleshooting

Homebrew, Scoop, and the apt repo come online with the first stable vX.Y.Z release (once it’s published) — they publish to a tap/bucket/repo only on stable releases. Until then, use a direct download or the release-attached Linux packages (both work from any release, including pre-releases).

Homebrew — Error: ... tap not found or no formula
The tap isn’t published yet (see the note above), or it’s stale. If it exists, run brew update first, then brew install ymedlop/tap/kuberoutectl.
Scoop — Couldn't find manifest / empty bucket
Same as above. After scoop bucket add ymedlop https://github.com/ymedlop/scoop-bucket, run scoop update so the new manifest is seen, then scoop install kuberoutectl.
apt — Unable to locate package kuberoutectl or a GPG/NO_PUBKEY error
Re-run the Cloudsmith setup.deb.sh (it adds the repo and imports the signing key), then sudo apt update. If the package isn’t there yet, the apt repo comes online with the first published stable release (see the note above) — use a direct .deb meanwhile.
Linux .apkUNTRUSTED signature
The packages are unsigned; add --allow-untrusted: sudo apk add --allow-untrusted kuberoutectl_*_amd64.apk.
Linux .rpm — nothing printed after rpm -i
Success is silent. The packages are unsigned, so there’s no signature prompt — run kuberoutectl version to confirm the install.
macOS (manual) — “kuberoutectl is damaged and can’t be opened”
Gatekeeper quarantined the unsigned binary — clear it with the xattr command under Linux and macOS (manual). (brew install does this for you.)
Windows (manual) — SmartScreen warning
The binary is unsigned — see the note under Windows (manual).
command not found after install
The install directory isn’t on your PATH. Packages install to /usr/bin/kuberoutectl; for a manual install, move the binary somewhere on your PATH.
kuberoutectl version shows an old version
An older binary earlier on your PATH is shadowing the new one. Find them with which -a kuberoutectl (Linux/macOS) or where kuberoutectl (Windows) and remove the stale one.

Next steps

Once kuberoutectl version works, head to a provider guide for your cloud, or run the universal loop:

kuberoutectl doctor              # is the provider CLI reachable?
kuberoutectl sync <provider>     # discover clusters + credential health
kuberoutectl target list         # what can I reach?
kuberoutectl target use <id>     # route kubectl at one cluster