Installation
Requirements
Section titled “Requirements”- Docker, running. It is currently the only verified runtime — see runtime backends.
- git, and a repository to work in. omh refuses to run outside one.
- Rust 1.85+, but only to build from source. Declared as
rust-versioninCargo.toml, and CI builds the whole tree on exactly 1.85 — so it is a floor something checks, rather than the version that happened to be on the maintainer’s machine.
Install
Section titled “Install”Homebrew
Section titled “Homebrew”$ brew install mindsers/tap/omhmacOS and Linux, arm64 and x86_64, from mindsers/homebrew-tap. The formula is generated by omh’s own release pipeline and its checksums are the ones that release published, so the two cannot disagree about what shipped.
brew upgrade keeps it current, which the script below cannot do — nothing in
install.sh updates itself.
The install script
Section titled “The install script”$ curl -fsSL https://ohmyharness.sh/install.sh | shThat URL redirects to install.sh in this repository — a
redirect rather than a copy, so the script you pipe to sh is the one in the
tree you are reading.
The script resolves the latest release, picks the build matching your OS and
architecture, verifies it against the published SHA256SUMS, and installs to
~/.local/bin. It refuses rather than guesses: an unverified download, a
checksum that does not match, or a binary that will not run on your machine all
stop the install, and a failed install never replaces a working omh.
OMH_VERSION |
tag to install, instead of the latest |
OMH_BIN_DIR |
where the binary goes (default ~/.local/bin) |
OMH_BASE_URL |
where to fetch from — for mirrors, and for testing the script. Pair it with OMH_VERSION: resolving latest always asks github.com |
Linux builds are static musl, so one build covers every distribution.
From source
Section titled “From source”$ git clone https://github.com/mindsers/ohmyharness && cd ohmyharness$ cargo build --release$ cp target/release/omh ~/.local/bin/ # or put target/release on PATHomh is installed. Your first session sets a repository up and runs an agent in it.