Install
igris is one static binary. You need Claude Code and a place for sessions to live (herdr or tmux) before you run a phase.
What you need
- Claude Code, logged in the way you normally use it (a Pro or Max subscription, say). igris starts ordinary interactive sessions, so it uses your normal login and limits.
- herdr or tmux 3.2 or later. Each session runs in a herdr tab or a tmux window, so everything survives a disconnect and you can reconnect over SSH, even from a phone.
- git, recommended: igris can commit after each task and warns when the tree is dirty.
- Linux or macOS (amd64 or arm64). On Windows, use WSL2 (below).
igris needs Claude Code 2.1.291 or later (tested with 2.1.309), herdr 0.9.1 and tmux 3.2 or later (tested with 3.7). igris check and igris arise warn when one of them is missing, older, or a newer major version; they never refuse to run because of it.
If
ANTHROPIC_API_KEYis set in your environment, Claude Code bills the API instead of your subscription. igris warns you about this at start and asks you to confirm.
Install igris
Homebrew (Linux and macOS):
brew install drilonrecica/tap/igris
Go (the version pinned in go.mod or newer; an older Go fetches it):
go install github.com/drilonrecica/igris/cmd/igris@latest
A prebuilt binary from the Releases page: igris_<version>_<os>_<arch>.tar.gz for linux and darwin on amd64 and arm64. Verify the download (next section), then put the binary on your PATH:
tar xzf igris_<version>_<os>_<arch>.tar.gz
install -m 755 igris ~/.local/bin/igris
igris version
Verifying a download
Every release since 0.6.0 is signed with the igris release key, an SSH key. OpenSSH 8.1 or later verifies it, on every Linux and macOS, with nothing else to install. Download checksums.txt and checksums.txt.sig from the same release as your archive, fetch allowed_signers from the release's tag, check that it holds the key published in the README, and verify:
curl -fsSLO https://raw.githubusercontent.com/drilonrecica/igris/v<version>/allowed_signers
ssh-keygen -Y verify -f allowed_signers -I igris -n file -s checksums.txt.sig < checksums.txt
sha256sum -c --ignore-missing checksums.txt # macOS: shasum -a 256 -c --ignore-missing checksums.txt
The first command must print Good "file" signature for igris, and the second OK for your archive. The signature covers checksums.txt, which lists every archive and its SBOM. Homebrew checks each archive against the sha256 in its formula, and go install checks modules against the Go checksum database.
Updating igris
From 1.2, igris update asks GitHub for the latest release and, when it is newer, updates igris the way it was installed, after asking:
igris update --check # the current and latest versions and the method; runs nothing
igris update # asks Update? [y/N]; --yes skips the question (needed without a terminal)
- Homebrew: it runs
brew upgrade igris. go install: it runsgo install github.com/drilonrecica/igris/cmd/igris@vX.Y.ZwithGOBINset to the directory of the igris you run. Within about 30 minutes of a release the Go checksum database may not know the tag yet (unknown revision); retry later, or withGOPROXY=direct GONOSUMDB=github.com/drilonrecica/igrisas igris suggests.- A prebuilt binary: nothing runs. igris prints the release link and the download, verify and install steps for your platform.
On the home screen, u (Updates) does the same in a dialog, and offers no Update while a run holds the project. A development build isn't updated. When it is done, quit and start igris again; igris never replaces or restarts itself. Runs in other projects keep going and their sessions use the new igris for igris done.
igris contacts GitHub only then: never at start, on a timer or during a run. It reads only the release's tag from the answer, and leaves the new binary's integrity to Homebrew and Go.
Shell completion
igris completion bash|zsh|fish prints a completion script for subcommands, flags, and phase and task IDs from your plan.
# bash: add to ~/.bashrc
source <(igris completion bash)
# zsh: add to ~/.zshrc, after compinit
source <(igris completion zsh)
# fish: install once
igris completion fish > ~/.config/fish/completions/igris.fish
Where igris runs
igris arise runs inside herdr or tmux: sessions have to outlive igris and your connection. igris init writes backend = "auto", which uses herdr inside a herdr pane and tmux inside tmux; set backend = "herdr" or "tmux" in igris.toml to pin one. Outside both, igris arise exits and says where to run it.
Only arise and adapt need a backend. init, doctor, check, phases, status, history, report, done, skip, reset and notify test run in any shell.
herdr
igris starts every session in its own herdr tab, so run igris arise inside a herdr pane with the herdr server running:
- Install herdr and start it (
herdr), ideally on the machine where your project lives. Reconnect over SSH whenever you like; everything is still running. - Optional:
herdr integration install claude, so herdr itself also shows Claude's state. igris doesn't need it: it reads the state from Claude Code hooks. - In a herdr pane,
cdto your project and run igris.
tmux
Each session opens in its own tmux window, in the background, named <task> · <rank>:
- Install tmux 3.2 or newer and start it (
tmux, ortmux new -s work). Detach withctrl+b d; reattach later, also over SSH, withtmux attach. - In a tmux window,
cdto your project and run igris. - Press
oin igris (orctrl+band the window number) to switch to a session's window, and come back the same way.
Windows (WSL2)
igris doesn't run natively on Windows. It runs inside WSL2, like herdr and Claude Code:
- Install WSL2 with a Linux distribution (Ubuntu is fine) and open it in Windows Terminal.
- Inside WSL, install herdr or tmux, Claude Code and igris (the
linux_amd64binary, orlinux_arm64on ARM). Don't mix sides: an igris in WSL can't drive a Claude Code or herdr installed on Windows. - Keep the project in the Linux filesystem (
~/code/…), not under/mnt/c. Files on the Windows drive are much slower from WSL, and Windows tools touching the same checkout make for surprising diffs.
Plans and igris.toml saved by Windows editors work: CRLF line endings and a UTF-8 byte order mark are fine, and igris keeps both when it writes a Status cell.
Next
Quick start takes a project from nothing to a finished phase.