Built for Claude Code · Codex

Ship in parallel. Miss nothing.

Odradek watches every Claude Code and Codex session on your Mac and surfaces the ones waiting on you, stalled, or sitting on uncommitted work — before you notice they went quiet.

macOS 26 · Apple Silicon · Developer ID signed and notarized · Free

Odradek 2 attention4 running1 done
odradek-ide
Write the LP prompt
AskUserQuestion · 3m
WAITING
Fix widget rendering
Edit WidgetView.swift · 18m
UNCOMMITTED
insession-app
Verify letter read-aloud
wrote the WAV · 1h
DONE
Sync smoke test
Bash node ws-smoke.mjs · now
RUNNING
claude attach 8f21c3 — Write the LP prompt
read Theme.swift (dark palette)
wrote index.html
checking Pages settings…
? OK to publish as is
> 

Works with the agents you already run

Claude Code Codex claude --bg tmux screen git worktrees

Things fall through when nobody was looking.

None of these is a bug. Each one is a run that finished, or stopped, in a window you had already scrolled past.

It finished, unnoticed There is no completion notice anywhere. You find the result at night, three hours after it landed. done · unseen 3h
It stalled, unnoticed It is waiting on a single confirmation, and everything else about it still looks busy. blocked / 15 min idle
It vanished, uncommitted Work written into a worktree gets cleaned up along with the session — never committed, never pushed. worktree dirty

Seven signals. Nothing else lights up.

Color means state, and only state. Every rule lives in one place, so the list reads the same way every time you glance at it.

01Waiting on your replystate = blocked
02Probably stalledtempo = blocked
03No movement for 15 minutesno update
04Finished, still unseendone, unconfirmed
05Finished and left sittingthe above, plus 3h
06Never committed or pushedworktree dirty
07Worktree already gonemissing while running

Watch it, then pick up where it left off.

The list is the entry point, not the destination. Every row opens into the terminal that produced it.

A terminal per session

Select a row and its terminal opens on the right. It streams claude attach, so you can type into a run that is still going. Split the pane when one screen is not enough.

swift build … done running tests

A ledger for what you meant to do

Intent is written nowhere on the job side, so Odradek keeps it. One list in update order: start a session from a task, and the runs you launch stay linked to it.

Decide the LP design direction2 sessions Add the release steps to the READMEtodo

A review board

Review requests and your own pull requests on a three-column board. Press a card to open it on GitHub. The ones you left sitting are surfaced too.

#417 follow-upto review #409 notificationsin review

Notifications that mean something

A macOS notification the moment a run starts waiting, stops, or sits finished. Press the banner and the app opens on that session.

Waiting · Write the LP prompt 15 min idle · Sync smoke test

What it is doing right now

Each row shows the step a run is on. If it stopped on a question, you can read the question itself from the list, without opening the terminal.

Bash: swift build ? OK to go this way

Your agent, your model

Choose Claude Code or Codex, and the model to run it with, at launch. Set a default skill and it is already selected the next time.

Claude Code · claude-fable-5 Codex · gpt-5

Read the diff before it disappears

See what is still uncommitted in a worktree without entering the terminal. A tree of changed files with collapsible hunks, so you can check the work before cleaning it up.

M swift/Sources/Widget/WidgetView.swift A swift/Tests/WidgetTests.swift

Repositories and skills

Your repositories, grouped and colored by org. The Skills tab lists .claude/skills, and pressing one starts a session with that skill already chosen.

ship-session · issue to green release · changeset to published

It reads. It does not touch.

Odradek sits next to the tools you already trust, and stays out of their way.

Read-only

Job files written by Claude Code are only read, never modified. Conversation logs stay, so claude --resume still works.

No tokens stored

GitHub auth is left to gh and its keyring. The app stores no credentials and never leaks them into error messages.

Signed and notarized

Signed with an Apple Developer ID and notarized. No need to strip quarantine attributes to open it.

Installing takes a minute.

01

Get the dmg

Download the latest Odradek_*.dmg from GitHub Releases.

02

Move it to Applications

Do not launch it from the dmg. Drag the app into Applications first.

03

Open it

It is notarized, so it opens on a double-click. Updates arrive from inside the app.

The runs you forget are the ones that cost you.

The more you run in parallel, the more quietly they slip.

macOS 26 · Apple Silicon · Free