ota Installation

July 29, 2026 · View on GitHub

ota ships prebuilt release binaries for the mainstream GitHub-hosted target matrix:

  • Linux: x86_64-unknown-linux-gnu, aarch64-unknown-linux-gnu
  • macOS: x86_64-apple-darwin, aarch64-apple-darwin
  • Windows: x86_64-pc-windows-msvc, aarch64-pc-windows-msvc

Use source install only when developing ota from a cloned checkout. The installers include a branded otter banner and a compact success receipt so the install path feels intentionally ota-native. The hosted install scripts are intentionally stable root URLs: install.sh and install.ps1.

macOS/Linux

Install the latest release binary:

curl -fsSL https://dist.ota.run/install.sh | sh

When the installer runs inside GitHub Actions, it automatically exports the resolved ota bin directory to GITHUB_PATH so later workflow steps can call ota without manual path handling.

Persist the install directory on PATH explicitly:

curl -fsSL https://dist.ota.run/install.sh | sh -s -- --setup-path

Pin a release:

curl -fsSL https://dist.ota.run/install.sh | OTA_VERSION=vX.Y.Z sh

Track an unreleased branch tip for active pressure testing:

curl -fsSL https://dist.ota.run/install.sh | OTA_GIT_BRANCH=branch-name sh -s -- --from-git

From a cloned ota repository:

./scripts/install.sh --from-source

Persist the source-install binary directory on PATH explicitly:

./scripts/install.sh --from-source --setup-path

The shell installer also supports OTA_RELEASE_BASE if you host the release assets on a mirror or CDN. If a prebuilt release is not published for the detected target, the installer now says so explicitly before trying the cargo fallback. --setup-path is opt-in: ota will not silently modify shell startup files unless you ask it to.

Install the Ota skill (PowerShell)

npx skills add ota-run/skills --full-depth

Windows (PowerShell)

Install the latest release binary:

irm https://dist.ota.run/install.ps1 | iex

When the PowerShell installer runs inside GitHub Actions, it automatically appends the resolved ota bin directory to GITHUB_PATH, including the Windows %LOCALAPPDATA%\\ota\\bin install path.

Persist the install directory on PATH explicitly:

& ([scriptblock]::Create((irm https://dist.ota.run/install.ps1))) -SetupPath

Pin a release:

$env:OTA_VERSION = "vX.Y.Z"
irm https://dist.ota.run/install.ps1 | iex

Track an unreleased branch tip for active pressure testing:

$env:OTA_GIT_BRANCH = "branch-name"
& ([scriptblock]::Create((irm https://dist.ota.run/install.ps1))) -FromGit

From a cloned ota repository:

powershell -ExecutionPolicy Bypass -File .\scripts\install.ps1 -FromSource

Persist the source-install binary directory on PATH explicitly:

powershell -ExecutionPolicy Bypass -File .\scripts\install.ps1 -FromSource -SetupPath

The PowerShell installer also supports OTA_RELEASE_BASE for a mirror or CDN. If a prebuilt release is not published for the detected target, the installer now says so explicitly before trying the cargo fallback. Official release installs require published checksums; custom mirrors can set OTA_ALLOW_MISSING_CHECKSUMS=1 if they intentionally host assets without checksum files.

Install the Ota skill

npx skills add ota-run/skills --full-depth

Windows (Git Bash / MSYS / MinGW / Cygwin)

Install the latest release binary:

curl -fsSL https://dist.ota.run/install.sh | sh

This path now recognizes Windows-style shells and downloads the release binary instead of falling back to cargo. If the existing ota.exe is locked by a running process, the installer stages the replacement, reports it as pending, and exits successfully.

Verify

ota --version
ota validate --help

Maintainer version bump

Use the Ota task surface to update the repo release version surfaces consistently:

ota run bump:version --version patch
ota run bump:version --version minor
ota run bump:version --version major
ota run bump:version --version 0.2.0
ota run bump:version --version patch
ota run bump:version --version 0.2.0