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
igris running a two-task phase in herdr: each task gets a fresh Claude Code session on the model the plan assigns, sonnet then opus, and the phase completes

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
  1. Takes the next ready task in phase M0.
  2. Opens a fresh session with that task's model: --model sonnet, opus, fable, …
  3. Hands it the task, the plan and your project rules.
  4. Waits and notifies you when Claude needs a decision, an approval or a plan review.
  5. On igris done it runs your checks, offers to commit, marks the task done and unblocks dependents.
  6. 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.

sonnet

Routine, well-specified work.

opus

Complex or security-sensitive logic.

fable

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.

igris home screen on a wide terminal: phases P1 and P2 with progress bars, a NOW card naming the next tasks P1-02 on sonnet and P1-03 on opus, a HEALTH section with the plan and doctor checks, a RECENT section and an action bar
The same home screen on a phone-width terminal, stacked in one column with the action bar wrapped

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 M0

Quick start, herdr and tmux setup in the README

Requirements

  • 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.

More in the README FAQ