Getting started
Install
Install ota from release binaries first, and from source when you are developing it.
Recommended next
Release binaries
For most users, install the published binary. Choose your install method based on what you need to prove:
Current release (recommended)
Use this when you want the latest stable Ota release. The installer fetches the newest released version automatically.
curl -fsSL https://dist.ota.run/install.sh | shcurl -fsSL https://dist.ota.run/install.sh | sh -s -- --setup-pathirm https://dist.ota.run/install.ps1 | iex& ([scriptblock]::Create((irm https://dist.ota.run/install.ps1))) -SetupPathPin to a specific release
Use OTA_VERSION when you need deterministic proof on one exact released version. This is the path for CI workflows, protected deployments, and reproducible installs.
curl -fsSL https://dist.ota.run/install.sh | OTA_VERSION=vX.Y.Z shcurl -fsSL https://dist.ota.run/install.sh | OTA_VERSION=vX.Y.Z sh -s -- --setup-path$env:OTA_VERSION = "vX.Y.Z"irm https://dist.ota.run/install.ps1 | iex$env:OTA_VERSION = "vX.Y.Z"& ([scriptblock]::Create((irm https://dist.ota.run/install.ps1))) -SetupPathInstall one exact commit (unreleased)
Use OTA_GIT_REV when you need to test or use one exact unreleased source revision. This pins to an immutable commit hash and does not follow branches.
curl -fsSL https://dist.ota.run/install.sh | OTA_GIT_REV=<commit-hash> sh -s -- --from-gitcurl -fsSL https://dist.ota.run/install.sh | OTA_GIT_REV=<commit-hash> sh -s -- --from-git --setup-path$env:OTA_GIT_REV = "<commit-hash>"& ([scriptblock]::Create((irm https://dist.ota.run/install.ps1))) -FromGit$env:OTA_GIT_REV = "<commit-hash>"& ([scriptblock]::Create((irm https://dist.ota.run/install.ps1))) -FromGit -SetupPathFollow a pressure-testing branch
Use OTA_GIT_BRANCH only for active pressure testing or development. This tracks a moving branch tip and does not provide deterministic proof.
curl -fsSL https://dist.ota.run/install.sh | OTA_GIT_BRANCH=<branch-name> sh -s -- --from-gitcurl -fsSL https://dist.ota.run/install.sh | OTA_GIT_BRANCH=<branch-name> sh -s -- --from-git --setup-path$env:OTA_GIT_BRANCH = "<branch-name>"& ([scriptblock]::Create((irm https://dist.ota.run/install.ps1))) -FromGit$env:OTA_GIT_BRANCH = "<branch-name>"& ([scriptblock]::Create((irm https://dist.ota.run/install.ps1))) -FromGit -SetupPathFrom source
Use the source install path when you are working from a cloned checkout.
./scripts/install.sh --from-source./scripts/install.sh --from-source --setup-pathpowershell -ExecutionPolicy Bypass -File .\scripts\install.ps1 -FromSourcepowershell -ExecutionPolicy Bypass -File .\scripts\install.ps1 -FromSource -SetupPathAfter installation
- Confirm the binary is available with
ota --version. - Use
ota --version --jsonwhen CI or tools need explicit build provenance (semver,source_build, full sourcecommit,dirty) plusschema_versionandcontract_capabilities. - Treat
schema_versionas the coarse contract-generation marker andcontract_capabilitiesas the additive feature-support catalog. - Run
ota doctorin a repo before you write or execute tasks. - Use
ota validate --helpto confirm the CLI is available and responsive.
ota --versionota --version --jsonota doctor --plainota validate --helpInstall the Ota skill
Install the skill after ota is already on PATH and the binary verifies cleanly.
The source of truth lives in ota-run/skills, and ota skills install writes that first-party distribution into the selected agent skill directory.
ota skills install --agent codexota skills install --agent claude