Repository navigation
Releases: drilonrecica/igris
Release list
igris v1.0.0-rc.1
igris runs the tasks in your markdown project plan one at a time, each in a fresh Claude Code session, started with exactly the model your plan assigns to that task.
v1.0.0-rc.1 is the first release candidate for igris 1.0. It adds no features. It decides what 1.0 promises not to break, writes it down, and tests it, and it makes the few breaking changes that had to come before that promise. Try it on your projects and report anything that breaks: what this release freezes is what 1.x keeps.
What 1.0 promises
From 1.0 until 2.0, these keep working unchanged (SPEC §19). 1.x may add to them, never remove or change them:
- The plan format, now on its own page:
docs/plan-format.md. A plan may say<!-- igris:format 1 -->; it never has to. igris.toml: keys, defaults and validation.- The CLI: commands, flags, arguments, and exit codes (
0success,1failure,2usage error,3–9reserved), with what exits1for each command in SPEC §14. --jsonofcheck,phases,status,history,reportanddoctor, each with a JSON schema indocs/json/.igris done,skipandresetand the signal files they write,.igris/withstate.jsonand the run log, the template variables, the generic webhook (payload and headers) and the task-hook environment (IGRIS_*).
Not promised: the TUI, the default prompt's wording, text output, and igris's Go packages.
A compatibility suite keeps the promise honest: the configs, plans and signal files every release from 0.1.0 to 0.6.0 wrote, captured by building each release from its tag, plus the state files and run logs of each format, all checked on every change.
Upgrade
Homebrew stays on 0.6.0 until 1.0.0. To try the candidate:
go install github.com/drilonrecica/igris/cmd/igris@v1.0.0-rc.1Or download the archive for your platform below, with checksums.txt and checksums.txt.sig, verify them, and put the binary on your PATH:
curl -fsSLO https://raw.githubusercontent.com/drilonrecica/igris/v1.0.0-rc.1/allowed_signers
ssh-keygen -Y verify -f allowed_signers -I igris -n file -s checksums.txt.sig < checksums.txt
sha256sum --ignore-missing -c checksums.txt # macOS: shasum -a 256 --ignore-missing -c checksums.txt
tar xzf igris_1.0.0-rc.1_<os>_<arch>.tar.gz
install -m 755 igris ~/.local/bin/igris
igris versionThe first command must print Good "file" signature for igris. Check that allowed_signers holds the key printed in the README's Verifying a download.
Then, in each project:
igris config migrate # once: removes claude.command, which every igris init before 0.7 wrote
igris checkconfig migrate shows the line it removes, asks first and keeps a backup in .igris/config/. The config's hash doesn't change, so a run interrupted under 0.6 resumes.
Behavior changes
claude.commandis removed. It never did anything (igris startsclaudefrom yourPATH). A config that still has it stopscheck,ariseanddoctorwithclaude.command was removed in 0.7 …; run igris config migrate.--jsonchanged (scripts need updating): every output starts with"v": 1;doctorprints{"v": 1, "checks": [...]}instead of an array; an empty rank or mode is left out instead of"—"; the count keyin progressisin_progress; pending signals are{"task", "action"}objects. Readers should ignore fields they don't know.- Exit codes: a malformed task ID in
done/skipand an unknownnotify test --eventexit2(usage error), not1.adaptstopped with Ctrl-C exits0, likearise. - Help:
igris help COMMANDshows that command's help;-houtput goes to stdout. state.jsonis version 3. Older state is read and upgraded. A state file from a newer igris says to upgrade, a damaged one says it is damaged. igris 0.6 can't read version 3: finish the run or delete.igris/state.jsonbefore going back.- A plan marked with a newer format (
<!-- igris:format 2 -->) gets one error,plan format 2 needs a newer igris, and igris suggests upgrading instead ofigris adapt.
Known limitations
- Linux and macOS; Windows through WSL2 only, not yet verified on a real Windows machine.
- On a public ntfy server without a token, the topic is the only protection: use a long random one, or set a token.
See CHANGELOG.md for every change in this release and the README for the full guide.
igris v0.6.0
igris runs the tasks in your markdown project plan one at a time, each in a fresh Claude Code session, started with exactly the model your plan assigns to that task.
v0.6.0 is about trust. It is the first signed release, and every archive comes with an SBOM. A run can work on a branch of its own, so your checkout stays as it is while an unattended agent works. The commands igris runs no longer see your notification secrets, and the threat model is written down, reviewed and tied to tests. igris also stops calling for you while Claude is only waiting on background work. Everything is additive: no plan or config migration is needed.
Highlights
- Signed releases.
checksums.txtand thev0.6.0tag are signed with the igris release key, an SSH key; checking a download needs onlyssh-keygen(below). The key is inallowed_signersand the README. - Worktree mode.
igris arise P1 --worktree(orworktree = trueunder[run]) runs the sessions, verify, task hooks and commits in.igris/worktrees/<run-id>on a new branchigris/<run-id>. Your checkout and branch stay as they are, and the plan stays in your checkout, where igris updates it as usual. An interrupted run continues in its worktree. A completed one tells yougit merge igris/<run-id>; igris never merges. This is the safe way to leave anautoor skip-permissions run alone. See Worktree mode. - No "needs you" while Claude waits on background work. When Claude ends its turn with tests on a simulator, a long build or a scheduled wakeup still running, the card says
waiting on background work (4m), and nothing is raised untilwaiting_limit(default30m). This works with herdr too, which shows the turn as finished. When Claude stops withoutigris doneand nothing is pending, igris first reminds it once before it calls you (nudge = falseturns that off). - Secrets stay out of your project's commands. Verify commands, task hooks and git never get the environment variables your notification tokens come from (
env:references). The new[run] envlimits verify and hooks to the variables you list. See What verify and hooks see. - A threat model and a second security review.
docs/threat-model.mdsays what igris protects and from whom, lists the accepted risks, and maps every safety rule to the test that enforces it. The review of everything added since v0.1 found 12 issues, none high: 10 are fixed and 2 accepted, all listed there. - Supply chain. An SPDX SBOM per archive, govulncheck on every push and weekly, a check that the release build is reproducible on Linux and macOS, and short fuzz runs in CI. Built with Go 1.27.2, which fixes 8 standard-library advisories that affected builds up to 0.5.1 (see Security in the CHANGELOG).
- Hover. With the mouse on, whatever a click would act on is underlined while the pointer is over it.
Upgrade
brew upgrade igris # or: brew install drilonrecica/tap/igris
go install github.com/drilonrecica/igris/cmd/igris@v0.6.0Or download the archive for your platform below, with checksums.txt and checksums.txt.sig, verify them, and put the binary on your PATH:
curl -fsSLO https://raw.githubusercontent.com/drilonrecica/igris/v0.6.0/allowed_signers
ssh-keygen -Y verify -f allowed_signers -I igris -n file -s checksums.txt.sig < checksums.txt
sha256sum --ignore-missing -c checksums.txt # macOS: shasum -a 256 --ignore-missing -c checksums.txt
tar xzf igris_0.6.0_<os>_<arch>.tar.gz
install -m 755 igris ~/.local/bin/igris
igris versionThe first command must print Good "file" signature for igris. Check that allowed_signers holds the key printed in the README's Verifying a download.
Your v0.5 plans and configs work unchanged and keep their config hash, so a run interrupted under v0.5 resumes without a config-changed notice.
Behavior changes
state.jsonis checked more strictly. A file whose current task, mode, verify attempts or worktree igris didn't write (a session's edit, or yours) is reported as damaged with "delete the file to start a new run". Files igris wrote read as before.- Verify, task hooks and git no longer get your notification secrets' variables, with or without
[run] env. A verify command that read one of them on purpose has to get it another way. - Everything igris prints to stderr is cleaned of escape sequences, so colored output from a git hook shows as plain text in igris's error messages.
- The verify excerpt sent back to a session is at most 16 KiB (still the last 60 lines).
- The TUI asks the terminal for all mouse motion to draw hover;
[tui] mouse = falseturns the mouse off entirely. - A secret set to
env:PATHorenv:HOMEis now a config error, andcheckandarisewarn about a webhook URL from anenv:reference that is plainhttp://.
Known limitations
- Linux and macOS; Windows through WSL2 only, not yet verified on a real Windows machine.
- Releases before 0.6.0 are not signed (checksums only).
- On a public ntfy server without a token, the topic is the only protection: use a long random one, or set a token.
See CHANGELOG.md for every change in this release and the README for the full guide.
igris v0.5.1
igris runs the tasks in your markdown project plan one at a time, each in a fresh Claude Code session, started with exactly the model your plan assigns to that task.
v0.5.1 is a small patch for v0.5.0: a first prompt that sometimes stays unsubmitted, blank rows in the live tail, report help and completion, a second Ctrl-C that didn't always exit, an external interrupt that could hang the screen, and a huge or odd run log that could stall igris. No change to the plan format, config keys or file formats.
Fixed
- A pasted prompt gets submitted. Rarely, Claude Code shows a session's first prompt in its input box but never submits it. When the session sits idle 15 s and its hooks never saw the prompt submitted, igris presses Enter once in the pane and says
the prompt didn't seem submitted; sent Enter oncein the feed. It never re-sends the prompt text; if that doesn't help, Needs you follows as before. Works in tmux and herdr. - No blank rows in the live tail. A line Claude Code pads to the pane's width, such as the right-aligned
◐ medium · /effort, now shows its text instead of a blank row ending in…. igris reporthelp and completion.igris report -handigris history -hshow theRUNargument, and bash, zsh and fish complete run IDs afterigris report, newest first.- A second Ctrl-C quits. While igris winds down after a run (from
igris ariseor home), it printsstopping… (Ctrl-C again to quit now)and another Ctrl-C exits at once;igris adaptandigris notify testexit on a second Ctrl-C too. killno longer hangs the screen. A SIGINT or SIGTERM sent from outside (kill -INT <pid>,kill <pid>) could leave the home screen, the run view or theadaptreview frozen on the alternate screen. igris now handles both signals itself, and the screen always closes.- A huge or odd run log can't stall igris.
igris history,igris report, run-ID completion and the home screen read only the last 16 MiB of.igris/runs.jsonl(saying so when the log is larger), and a FIFO in its place is an error instead of a hang.
Upgrade
brew upgrade igris
go install github.com/drilonrecica/igris/cmd/igris@v0.5.1Or download the archive for your platform below, check it against checksums.txt, and put the binary on your PATH. A run interrupted under v0.5.0 resumes normally.
See CHANGELOG.md for every change in this release.
igris v0.5.0
igris runs the tasks in your markdown project plan one at a time, each in a fresh Claude Code session, started with exactly the model your plan assigns to that task.
v0.5.0 shows you what a run is doing and what it did: the run view gets the phase's progress, an estimate for the current task and a live tail of its session, and igris report turns a finished run into markdown for your PR. Notifications reach Slack, Gotify and your own automation through a signed webhook, with message templates, quiet hours and digests. Everything is additive: no plan or config migration is needed.
Highlights
igris report [RUN] [--json]. One run as markdown, ready to paste into a PR description: how it ended, what was done and skipped, per task its duration, attempts, verify results, commit and how long it waited on you, the done notes and skip reasons, and aclaude --resume <uuid>for each session you can reopen.RUNis1(the newest),2, … or a run ID fromigris history. See Quick start.- Progress and ETA. The run view's header shows
phase M1 · 7/12 · 58% ██████░░░░(or the slice's progress for--only/--from/--until). Once your past runs have at least 3 finished tasks of the current rank, the task card adds≈ 14m leftfrom their median. - Live tail. The current-task card shows the session's last lines (6, or 3 on a narrow terminal), so you can see what Claude is doing without switching tabs. It is only drawn, never logged, sent or stored;
[tui] tail = falseturns it off. - Slack, Gotify and a generic webhook.
[notify.slack],[notify.gotify]and[notify.webhook], with secrets asenv:VARreferences. The webhook POSTs a fixed JSON payload and signs it with HMAC-SHA256 when you give it asecret. See Notifications. - Templates, quiet hours and digests. A
templateper channel (Gotext/templateover the event, project, phase, task, title, run ID and time) is checked whenigris.tomlloads.[notify] quiet = "22:00-07:00"holds everything but the urgent events and sends one digest per channel when the window ends;task_done_digestgroups finished tasks into one message per N tasks or per phase. - A documented run log.
.igris/runs.jsonllines are now versioned ("v":1) and carry the run ID, attempt, Claude session, verify profile, commit SHA, durations and when igris waited on you. The format is indocs/runlog.md;igris historyshows each run's ID.
Upgrade
brew upgrade igris # or: brew install drilonrecica/tap/igris
go install github.com/drilonrecica/igris/cmd/igris@v0.5.0Or download the archive for your platform below, check it against checksums.txt, and put the binary on your PATH:
sha256sum --ignore-missing -c checksums.txt # macOS: shasum -a 256 --ignore-missing -c checksums.txt
tar xzf igris_0.5.0_<os>_<arch>.tar.gz
install -m 755 igris ~/.local/bin/igris
igris versionYour v0.4 plans and configs work unchanged, and keep their config hash: a run interrupted under v0.4 resumes without a config-changed notice. Your existing runs.jsonl keeps working; history and report show — for details old runs didn't record.
Behavior changes
- The live tail is on by default. igris reads the current session's pane every
poll_intervalto draw it. Settail = falseunder[tui]to turn it off; igris then never reads the pane. igris historyshows run IDs after each run's start time ("run"in--json). Scripts parsing the text output may need adjusting.- A damaged
runs.jsonlline no longer breaksigris history: lines that can't be read are skipped with a note, and the rest shows. runs.jsonllines carry"v":1and new fields and events (task_retried,needs_you,needs_you_clear). Existing fields keep their meaning; scripts reading the file should ignore what they don't know.- The narrow run view's top line shows the phase's progress (
M0 · 3/7) instead ofphase M0. - Notifications don't follow redirects (ntfy and Discord included): a
3xxis reported as a failure, so set the final URL. Failures say only what went wrong (connection refused,TLS failed,server answered 403 Forbidden, …), never the URL or host. Discord and Slack webhook URLs must behttps.
Known limitations
- Linux and macOS; Windows through WSL2 only, not yet verified on a real Windows machine.
- Release artifacts are not signed (SHA-256 checksums only).
See CHANGELOG.md for every change in this release and the README for the full guide.
igris v0.4.0
igris runs the tasks in your markdown project plan one at a time, each in a fresh Claude Code session, started with exactly the model your plan assigns to that task.
v0.4.0 lets your plan say more about each task: which checks to run when it's done, how long it should take, and which files the session must read first. igris can also run just part of a plan, put a task back, run your own commands around every session, and lint a plan for CI. Everything is optional: no plan migration is needed. One default changes: sessions now run in Claude Code's auto permission mode unless your igris.toml sets default_mode.
Highlights
- Verify profiles. Name your checks in
igris.toml([verify] fast = "go test ./internal/...",full = "make fmt lint test"), give a phase its own with[phases.<id>] verify, and pick one per task with the newVerifycolumn, ornoneto skip. Plans name profiles, never commands.run.verifykeeps working as the profiledefault. See Verification and commits. - Timeout column.
45m,1h30m(at least1s): a session running longer is marked overdue, raises Needs you and sends the newtask_overduenotification, once per attempt. igris never stops the session for it. - Context column. Repo-relative files and directories the session reads before changing anything, listed in the task prompt as required reading. igris names the paths and never sends their contents; every path must exist inside the project.
- Run a slice.
igris arise --only M1-03,M1-05,--from M1-03,--until M2-02. Dependencies still count: a slice task that waits on unfinished work is reported asnot run, never forced. A bareariseresumes the same slice. igris reset ID [--force]. Put a task back toreadyorblockedto run it again, with or without an igris running. While igris runs, it asks you to confirm the reset first (a session could request one too). Resetting the task igris is on closes its session and pauses the run.- Task hooks.
[hooks] before_task/after_taskrun your own commands (argv lists, no shell) around every agent session, e.g. to start a dev database. A failingbefore_taskopens no session and asks you what to do. igris check --strict. Lints the plan (missing bold titles, overlong rows, gates that miss tasks of their phase,yolorows, …) and exits 1 on any plan or config warning. Machine warnings never fail it, so it runs in CI without Claude Code.
A worked example is in examples/advanced/: the example plan with Verify profiles, Timeouts and Context paths, and the igris.toml that defines its profiles.
Upgrade
brew upgrade igris # or: brew install drilonrecica/tap/igris
go install github.com/drilonrecica/igris/cmd/igris@v0.4.0Or download the archive for your platform below, check it against checksums.txt, and put the binary on your PATH:
sha256sum --ignore-missing -c checksums.txt # macOS: shasum -a 256 --ignore-missing -c checksums.txt
tar xzf igris_0.4.0_<os>_<arch>.tar.gz
install -m 755 igris ~/.local/bin/igris
igris versionYour v0.3 plans and configs work unchanged, with the exceptions below: a config without default_mode now runs sessions in auto mode, a plan column already named Verify, Timeout or Context is read as the new column, and a config written by v0.3 igris init doesn't send the new task_overdue on ntfy or Discord by itself. A run interrupted under v0.3.x resumes normally; if your config sets neither default_mode nor an events list, you get a one-time warning that igris.toml changed since the interrupted run (both defaults changed, so the config's hash differs even if you didn't edit the file).
Behavior changes
autois the default run mode. Configs that don't setdefault_modenow run sessions with--permission-mode auto: Claude Code approves routine actions itself and still asks you about risky ones. Setdefault_mode = "default"to keep every prompt going to you. Skip-permissions (yolo) still needs the typedskip permissionsconfirmation every run.Verify,TimeoutandContextare now column names igris reads. If your plan already has a column with one of these names for something else (a command, an estimate, notes),igris checkmay now reject it. Rename the column (e.g.Verify notes), letigris adaptdo it, or keep it as an extra column with an alias inigris.toml([columns]Context = "Background"). These columns no longer reach the session prompt as extra columns.task_overdueis in every channel's defaultevents. If your config listsevents(every config written by v0.3igris initdoes), add it there or remove theeventsline to hear about overdue tasks.igris initnow leaveseventsout while it is the default list, so new configs follow the defaults.igris adaptkeeps Verify, Timeout and Context cells as written and never invents profiles, timeouts or paths.- Plain
igris checkis unchanged; the lint hints appear only with--strict.
Known limitations
- Linux and macOS; Windows through WSL2 only, not yet verified on a real Windows machine.
- Release artifacts are not signed (SHA-256 checksums only).
See CHANGELOG.md for every change in this release and the README for the full guide.
igris v0.3.0
igris runs the tasks in your markdown project plan one at a time, each in a fresh Claude Code session, started with exactly the model your plan assigns to that task.
v0.3.0 brings tmux. Run igris inside tmux and every task gets its own tmux window, just as it gets a herdr tab inside herdr. igris also learns what Claude Code is doing (working, waiting for you, idle) from Claude Code's own hooks, so it no longer depends on herdr's integration for that. No change to the plan format.
Highlights
- tmux backend. Inside tmux 3.2 or newer, each session opens in a background window named
<task> · <rank>.oswitches to it, toasts show in tmux's status line, and everything survives a detach and an SSH reconnect. See tmux setup. backend = "auto". New projects pick herdr inside a herdr pane and tmux inside tmux, with no setting to change. Existingbackend = "herdr"configs keep working.- Agent state from Claude Code hooks. Each session gets a small hooks-only settings file (
--settings), so igris knows when a session is blocked on a question or permission prompt, idle, or gone. It works in tmux, and in herdr with or without herdr's Claude integration. Nothing is added to your.claude/settings, and the hook state only drives Needs you: a task still advances only onigris doneor your action. - One test suite for every backend. fake, herdr and tmux pass the same conformance tests, so the next multiplexer has a bar to meet.
Upgrade
brew upgrade igris # or: brew install drilonrecica/tap/igris
go install github.com/drilonrecica/igris/cmd/igris@v0.3.0Or download the archive for your platform below, check it against checksums.txt, and put the binary on your PATH:
sha256sum --ignore-missing -c checksums.txt # macOS: shasum -a 256 --ignore-missing -c checksums.txt
tar xzf igris_0.3.0_<os>_<arch>.tar.gz
install -m 755 igris ~/.local/bin/igris
igris versionA run interrupted under v0.2.x resumes normally under v0.3.0 in the same multiplexer. Resumed under the other one (started in herdr, resumed in tmux), the old session can't be reattached, and igris offers to continue the conversation, start fresh, mark it done, skip it or stop.
Behavior changes
- The default backend is
auto. Without abackendkey, igris now uses tmux when it runs in tmux. Inside herdr nothing changes. igris doctor --json: the checkherdr-availableis nowbackend, and the version check covers the backend you run in (herdrortmux).- A missing herdr integration is no longer a warning. igris reads the agent state from hooks without it.
Good to know
- In a folder Claude Code hasn't seen, the first session waits on its folder-trust question. No hook fires until you answer it, so after about 15 seconds igris holds the task prompt and shows Needs you. Open the window, answer once, and the prompt goes out by itself.
- Inside tmux running inside herdr,
autopicks herdr. Setbackend = "tmux"to override. - The tmux backend was verified on Linux (tmux 3.7c, Claude Code 2.1.293). The macOS tmux smoke run is still open.
Known limitations
- Linux and macOS; Windows through WSL2 only, not yet verified on a real Windows machine.
- Release artifacts are not signed (SHA-256 checksums only).
See CHANGELOG.md for every change in this release and the README for the full guide.
igris v0.2.1
igris runs the tasks in your markdown project plan one at a time, each in a fresh Claude Code session, started with exactly the model your plan assigns to that task.
v0.2.1 is a small patch for v0.2.0: two wording bugs in the home screen and history. No change to the plan format, config keys or file formats.
Fixed
- A completed run reads as done on home. After a run whose phases all completed, the NOW card is
READYwith alast run P1 completedline and the action bar says Arise…, instead ofSTOPPEDwith Resume. A stopped run whose phases still have work staysSTOPPED. - A running task reads "running". In
igris history,--jsonand the RUNNING card'srecent:line, a task still being worked on in a live run showsrunning, notunfinished.unfinishedis kept for tasks a run ended before they did.
Upgrade
brew upgrade igris
go install github.com/drilonrecica/igris/cmd/igris@v0.2.1Or download the archive for your platform below, check it against checksums.txt, and put the binary on your PATH. A run interrupted under v0.2.0 resumes normally.
See CHANGELOG.md for every change in this release.
igris v0.2.0
igris runs the tasks in your markdown project plan one at a time, each in a fresh Claude Code session, started with exactly the model your plan assigns to that task.
v0.2.0 gives igris a front door. Run igris in a terminal and you get a home screen: your phases and their progress, what runs next and on which rank, the health of your setup and your recent runs, with a button for everything you can do. New commands (doctor, history, completion) cover the same ground from the command line, and Homebrew is now an install option. No change to the plan format, config keys or file formats.
Highlights
- A home screen. Bare
igrisopens it. Preview a run, check the plan, open the doctor, read the history, view the settings, edit the plan in$EDITOR, adapt a plan igris can't read, send a test notification, then start a run, all without leaving the app. It stacks into one column on a phone-width terminal. See the README. - Onboarding in the app. In a folder with no
igris.tomlthe home screen walks you through init, the example plan, check, preview and your first run. igris doctor. One line per check of your machine and project, and the command that fixes each problem. It never changes anything.igris history. What ran, what finished, how long it took and how each run ended.igris statusalso shows the current run.- Shell completions.
igris completion bash|zsh|fishcompletes subcommands, flags and the phase and task IDs of your plan. - A run view that tells you more. The current task's card shows what the task is about,
t(or one click on any task) opens its full details, and when a session needs you the card saysoopens it. - Your turn, explained. A user task now says it is yours to do outside igris and how to finish it, and
dlets you leave a note (the name you picked, the key you got) that lands inigris history. - Copy with
y(OSC 52), including over SSH: theclaude --resumecommand of the current session, a log line, the adapt proposal's path. - A clearer adapt review, comparing your plan and the proposal table by table. And a plan convention for work that waits on something outside it: a
usertask that names the blocker. - Homebrew.
brew install drilonrecica/tap/igris.
Upgrade
brew install drilonrecica/tap/igris # or: brew upgrade igris
go install github.com/drilonrecica/igris/cmd/igris@v0.2.0Or download the archive for your platform below, check it against checksums.txt, and put the binary on your PATH:
sha256sum --ignore-missing -c checksums.txt # macOS: shasum -a 256 --ignore-missing -c checksums.txt
tar xzf igris_0.2.0_<os>_<arch>.tar.gz
install -m 755 igris ~/.local/bin/igris
igris versionA run interrupted under v0.1.x resumes normally under v0.2.0.
Behavior changes
- Bare
igrison a terminal opens the home screen instead of printing the help. Piped, scripted or under cron (stdin or stdout not a terminal, stdin/dev/null,TERM=dumb) it still prints the help and exits 2.igris helpalways prints it. igris arisewith no phase and nothing to resume opens the start-run wizard on a terminal instead of exiting 1. With--no-tui,--dry-runor without a terminal it behaves as before;igris arise PHASEis unchanged.
Good to know
- The first session in a folder Claude Code hasn't seen waits on its folder-trust prompt; igris shows "needs you". Open the session and answer it once.
acceptmode still asks before Bash commands, which is Claude Code's behavior.- After you quit,
igris statuskeeps showing the last run: that is the resume state.
Known limitations
- herdr only; a tmux backend is planned.
- Linux and macOS; Windows through WSL2 only, not yet verified on a real Windows machine.
- Release artifacts are not signed (SHA-256 checksums only).
See CHANGELOG.md for every change in this release and the README for the full guide.
igris v0.1.3
igris runs the tasks in your markdown project plan one at a time, each in a fresh Claude Code session, started with exactly the model your plan assigns to that task.
v0.1.3 brings igris to Windows through WSL2. It also fixes one bug that plans saved by Windows editors could hit. Upgrading is safe: no flags or file formats changed, and every config and plan that worked before still works.
Highlights
- Windows through WSL2. The README has a new Windows (WSL2) section. In short: install herdr, Claude Code and igris inside WSL (use the
linux_amd64archive), and keep your project on the Linux filesystem rather than under/mnt/c. A native Windows build is not planned. - Tested by simulation, not yet on real WSL2. No Windows machine was available for this release. Instead, the herdr smoke test was run on Linux under the conditions WSL users have: a project path with spaces (
John Doe/my project), the plan a symlink onto another filesystem,tasks.mdandigris.tomlsaved with a byte order mark and CRLF line endings, andcore.autocrlfon. It passed after the fix below.docs/check-wsl.mdis the checklist for a real WSL2 machine. If you run igris on WSL2, an issue saying how it went (good or bad) is very welcome. - Fix: plans with a byte order mark. Some Windows editors start UTF-8 files with a byte order mark (BOM). If the plan's first line was a
## Phaseheading, the BOM hid it, andigris checkreported "task table outside a phase". igris now ignores a leading BOM when reading the plan, and keeps it when it writes a Status cell, so the file stays exactly as your editor saved it.
Upgrade
go install github.com/drilonrecica/igris/cmd/igris@v0.1.3Or download the archive for your platform below, check it against checksums.txt, and put the binary on your PATH (on Windows, do this inside WSL with the linux archive):
sha256sum --ignore-missing -c checksums.txt # macOS: shasum -a 256 --ignore-missing -c checksums.txt
tar xzf igris_0.1.3_<os>_<arch>.tar.gz
install -m 755 igris ~/.local/bin/igris
igris versionA run interrupted under v0.1.2 resumes normally under v0.1.3.
Known limitations
- herdr only; a tmux backend is planned.
- Linux and macOS; Windows through WSL2 only, and WSL2 is not yet verified on a real Windows machine.
- Artifacts are not signed (SHA-256 checksums only).
- No Homebrew tap yet.
See CHANGELOG.md for every change in this release and the README for the full guide.
igris v0.1.2
igris runs the tasks in your markdown project plan one at a time, each in a fresh Claude Code session, started with exactly the model your plan assigns to that task.
v0.1.2 is about robustness. igris now tells you when the Claude Code or herdr on your machine isn't one it was verified with. The parser and the plan writer, the two parts that touch your plan, are now fuzzed, and error messages say what to do next. Upgrading is safe: no flags or file formats changed, every config that loaded still loads, and every plan that was valid stays valid.
Highlights
-
Version warnings. Claude Code and herdr change often, and igris depends on their flags and output.
igris checkandigris arisenow runclaude --versionandherdr --version. They warn if a tool is missing, older than the oldest version igris is verified with (Claude Code 2.1.291, herdr 0.9.1), or a newer major version than the newest one re-verified. Newer minor and patch versions don't warn. It is only ever a warning: igris never refuses to run because of a version. -
Your plan is safe, now with stronger evidence. igris writes your plan in one place only: a task's Status cell. That promise is now a fuzz property. For arbitrary plans (CRLF, no trailing newline, escaped pipes, backticks, fenced blocks that look like tables, non-ASCII, very long cells), a status change leaves every other byte of the file exactly as it was. Each target ran for 10 minutes without a finding. The parser, the config loader and the signal reader are fuzzed too: malformed input gives an error, never a crash.
-
Errors you can act on. The common failures now end with the next step:
- herdr not installed;
- no plan file;
- Claude Code failing to start in a tab;
- a failing
git commithook; - a stale lock;
- a mistyped task ID;
- a usage error.
igris donerun outside a live run says the signal is kept for the nextigris arise. -
Fewer silent surprises.
igris checknow warns whenANTHROPIC_API_KEYis set, and when you run it from a subfolder of your project (it readsigris.tomlonly from the current folder, so it was quietly using the defaults).igris arise,adaptandnotify testno longer create.igris/in a folder that isn't a project; they ask you to runigris init.claude.commandis deprecated: it never had an effect, because herdr always startsclaudefrom yourPATH. -
For contributors:
make fuzzruns every fuzz target, anddocs/reverify.mdre-checks the Claude Code flags and herdr JSON shapes igris relies on. It ran clean against Claude Code 2.1.292 and herdr 0.9.1.
Upgrade
go install github.com/drilonrecica/igris/cmd/igris@v0.1.2Or download the archive for your platform below, check it against checksums.txt, and put the binary on your PATH:
sha256sum --ignore-missing -c checksums.txt # macOS: shasum -a 256 --ignore-missing -c checksums.txt
tar xzf igris_0.1.2_<os>_<arch>.tar.gz
install -m 755 igris ~/.local/bin/igris
igris versionA run interrupted under v0.1.1 resumes normally under v0.1.2. Run igris check once: if it warns about your Claude Code or herdr version, that tells you what to update; if it warns that claude.command is ignored, delete that line from igris.toml.
Known limitations
- herdr only; a tmux backend is planned.
- Linux and macOS only.
- Artifacts are not signed (SHA-256 checksums only).
- No Homebrew tap yet.
See CHANGELOG.md for every change in this release and the README for the full guide.