Disclosure: I'm Rohan, and I work on Shrine. This is the build story, with the link at the end.
A few months ago, our normal workday turned into herding agents. Three or four Claude Code and Codex sessions going at once, across a couple of repos. The work was fine. The problem was us. We'd come back from a coffee to find one session had been sitting on a permission prompt for 40 minutes while we assumed it was busy.
Version one: notifications
The first fix was the obvious one: fire a macOS notification when an agent needs you. It worked for about a day. Then the notifications piled up, they all looked the same, and none of them told you which session they were about. "Claude needs your attention" is useless when there are four Claudes.
Version two: the notch
So we moved it to the one bit of the screen we always see. Shrine lives in the notch and shows each session as working, idle or needs input, grouped by project. When one needs you, it says so. Most of our bugs were in the state transitions, not the UI: sessions that end without saying goodbye, sub-tasks, and long pauses that look like idling.
The bit nobody asked for
Then we noticed something odd. A day of agent work leaves you with nothing to look at. You might have shipped six pull requests, but it feels like you spent the day typing "yes" into terminals.
So we gave the notch a room. It opens into an isometric pixel-art shrine. You start with a frog at a laptop and a lantern. Pushes, pull requests and long research runs earn achievements, and each one tells you what earned it and what's next, then sparkles its way into the island. The room follows your Mac's clock, so at night the wood stove and lantern glow.
Then the pets. Every agent session gets its own little pixel companion, and it's on that session's notifications too. That turned out to be useful as well as cute: you know who's calling before you've read a word.
Then loot, because of course. Agent-minutes fill "offerings". Crack one open over the room and out come frogs, lanterns, a sakura tree. Duplicates become Petals for a shop. Petals only come from offerings, never money. We were firm on that.
What we learned
- The boring part has to be boring. If the status is wrong even once a day, nobody trusts the pretty part.
- Identity beats information. A face on a notification did more than a longer message.
- People screenshot the room, not the status. So we added "save or copy a picture of your sanctuary".
- Ship the welcome and the demo mode. Half the people who try a monitoring app have nothing running at that moment.
Try it
Shrine is free, opens without an account or licence key, and needs macOS 14+ on Apple silicon. It's a signed, notarized DMG that keeps itself up to date. Pro (£14.99/month) is optional, for theme packs and add-ons as they arrive.
If you try it, I'd love to hear what you think should count as an unlock, and where the status gets it wrong.
Download free: https://agentshrine.com/download
Top comments (1)
rohan, this is a masterclass in ux for ai agent fatigue. the insight that "identity beats information" (giving each session a unique pixel pet) is a brilliantly simple solution to notification blindness.
however, the hardest part of building this isn't the pixel art; it's the state detection. accurately distinguishing between an agent that is "thinking/processing" vs. one that is genuinely "blocked waiting for user input" is notoriously tricky.
how exactly is shrine detecting that "needs input" state? are you parsing stdout/stderr for specific interactive prompt patterns (like
y/Nor specific tool-call approval strings), or are you hooking into a more structured ipc/api event from the agents themselves (like claude code's session events)?also, out of curiosity, how do you calculate "agent-minutes" for the loot system? is it raw wall-clock time, or are you tracking actual active inference time to prevent idle sessions from farming offerings?
fantastic build. the insight about shipping a demo mode for users with nothing currently running is spot on—frictionless onboarding is everything. 🐯🏯