Arise. One task, one fresh session, the right rank.
Run your task plan one fresh Claude Code session at a time.
Each task on exactly the model your plan assigns. Never a more expensive one.
go install github.com/drilonrecica/igris/cmd/igris@latest
Long Claude Code sessions fill their context and drift, and picking the model by hand for every task is tedious. The expensive mistake is the silent one: a routine task quietly running on your most expensive model.
How it works
You already plan your work as a task table with dependencies and a model per task. igris turns that plan into an execution queue:
igris arise M0- Takes the next ready task in phase
M0. - Opens a fresh session with that task's model:
--model sonnet,opus,fable, … - Hands it the task, the plan and your project rules.
- Waits and notifies you when Claude needs a decision, an approval or a plan review.
- On
igris doneit runs your checks, offers to commit, marks the task done and unblocks dependents. - Starts the next task in a new session, until the phase is finished.
Strictly sequential. Deterministic. No LLM decides which model runs what.
Shadows have ranks
Like summoning the right shadow for the fight, each task gets the rank your plan gives it.
Routine, well-specified work.
Complex or security-sensitive logic.
The highest-stakes design and correctness work.
Rank aliases are configurable in igris.toml. A task without a usable model is a validation error, not a guess.
Your plan is the input
A plain markdown file: one task table per phase. This is all igris needs.
## P1 — Hello CLI | ID | Task | Deps | Status | Model | |-------|----------------------|-------------|---------|--------| | P1-01 | **Project skeleton** | — | done | sonnet | | P1-02 | **Flag parsing** | P1-01 | ready | sonnet | | P1-03 | **Greeting design** | P1-01 | ready | opus | | P1-G | **P1 gate** | P1-01…P1-03 | blocked | sonnet |
igris only ever changes Status cells, byte for byte. igris check validates the plan; a plan in another format can be converted with igris adapt, and you review the diff first. Optional columns give a task its own mode, verify profile, timeout and files to read first. See the full example plan.
What you get
A fresh session per task
No context bleed from one task into the next. Each session gets the task, the plan and your rules.
Your plan stays yours
Only Status cells change. Unexpected edits to the plan pause the run.
Stops when it needs you
Questions, approvals, stalled or overdue sessions and failed checks notify you via herdr or tmux toasts, ntfy, Discord, Slack, Gotify or a signed webhook, with your own message templates and quiet hours that hold all but the urgent ones.
Verify and commit
Your checks run on every done, with a verify profile per task or phase: a fast check here, the full suite there. Failures go back to the same session. Commits are ask, auto or never.
Watch it work, from your phone
A live tail of the current session, the phase's progress and an estimate from your past runs. Mouse and keyboard, choice dialogs, and a single-column layout for small terminals over SSH.
On a branch of its own
Worktree mode runs a whole run in a git worktree on its own branch, so your checkout stays as it is. Review the branch, merge it or drop it: igris never merges.
Signed and checked
Signed releases with an SBOM, your notification secrets kept out of the commands it runs, and a threat model that ties every safety rule to a test.
Resumable, and reported
Quit any time. igris arise reattaches to the running session or continues where it left off. igris report turns a run into markdown for your PR.
Home screen
Run igris in a terminal: the project at a glance. Phases with progress, what runs next and on which rank, the health of your setup and your recent runs, with one button for each thing you can do now.
Everything works from the keyboard or by clicking: preview a run, check the plan, open the doctor, edit the plan or settings, adapt a plan, send a test notification, then start. The home screen in the README
Install
With Go:
go install github.com/drilonrecica/igris/cmd/igris@latest
Or with Homebrew (Linux and macOS):
brew install drilonrecica/tap/igris
Or download a static binary for Linux or macOS (amd64, arm64; on Windows, the Linux one inside WSL2) from Releases. Releases are signed: check checksums.txt with its signature and ssh-keygen, as the README's Verifying a download shows.
Then, in a herdr pane or a tmux session in your project:
igris init && igris check && igris arise M0Requirements
- Claude Code, logged in the way you normally use it (Pro/Max subscription).
- herdr or tmux 3.2+, which keep sessions alive across disconnects.
- git, recommended.
- Linux or macOS, or Windows through WSL2 (notes).
If ANTHROPIC_API_KEY is set, Claude Code bills the API instead of your subscription. igris warns you at start.
Does igris use my subscription or the API?
Whatever Claude Code normally uses for you. igris starts ordinary interactive sessions, so they run on your login and count against its limits. It never sets ANTHROPIC_API_KEY and never reads, prints or stores your Claude credentials.
Why a fresh session per task?
A long session fills its context and drifts, and one task's context shouldn't leak into the next. A fresh session gets the task, the plan and your project rules, and nothing else.
Can igris pick the model for me?
No, on purpose. The plan's Model column is the only input: igris launches exactly that rank and never a more expensive one.