It's late. The review agent has found one more thing: a boundary case in a regex. The coding agent fixes it, opens another PR, and the reviewer finds the next one. Some nights that's dozens of PRs, and none of them is wrong.
I didn't want to scold anyone. I wanted to hit something.
What actually wears me out?
Not the big failures. A broken build is easy: you're angry for a minute and you fix it. These are the ones that wear me down.
- The review that never ends. One agent writes, another reviews, and the reviewer always has a nitpick. A person knows when to say "good enough." An agent forgets it's allowed to say no, and keeps polishing the same corner.
- The side quest. Halfway through task A it trips over task B, and puts all its energy into B. A is forgotten.
- Pulling teeth. It stops at some boring little spot and tells me what it did, but not what comes next. I ask, it moves one step, it stops again.
- The silent decisions. The work is done, and the choices it made along the way aren't mentioned. Ask, and you get a little more.
None of these is a bug. That's why they're so tiring.
Why would a terminal need therapy?
Plenty of tools help agents work better. I haven't found one that asks how the person on the other end feels at that moment.
You can type "seriously?" into the prompt. It doesn't help. You can walk away, which is the right call, and not always possible.
I wanted a third option: something you can do right now, with one click, that's a little funny. If a bad afternoon can at least be absurd, I can stay in the work.
What's on the rack?
At the bottom left of the Inspector there's a sofa button. Click it and a rack opens: three weapons and three spells. Pick one and click the terminal. It's called Terminal Therapy. Here's each tool in action.
Hammer lands right where you click. The text slips and cracks and the screen shakes, but nothing burns. It's the one for the fifth "You're absolutely right."
Pistol fires a short way ahead along a dashed aim line that follows the way you move the pointer. It leaves a small charred pit. It's what I'd type "seriously?" with.
Rocket Launcher flies farther and blows a crater with a glowing rim. It needs a moment to reload, which is probably healthy. This is for when it rewrote the whole package. Again.
You hold a weapon until you put it away. Spells are used once.
What are the spells for?
Bless is my favorite. A column of light comes down, every mark you left is cleared, and the text glows gold for a few seconds. The practical part is that the screen is clean again. But I also think of it as a small superstition. You make a wish for the next run: first try, no surprises. I know it does nothing to the agent. I do it anyway.
Ignite and Freeze don't mean anything. Sometimes you just want to burn the whole thing down, or freeze it right where it stands. Fire spreads from your click for about five seconds and leaves scorch marks. Frost covers the screen and thaws away by itself, leaving nothing behind. A new spell replaces the one still showing.
Your turn: the original post on ponymux.com has the real rack running in the page, and every tool works.
How does it work?
Everything is drawn in PonyMux's own renderer, on top of the terminal's output.
It's built on Ghostty's renderer, with a custom patch so the renderer knows where you clicked. That's why it's PonyMux-only. You can't just drop a shader into another terminal and get this.
The damage stays after you put a weapon away. The × beside the sofa clears it, so does Bless, and so does restarting the terminal. Nothing is saved.
Sounds are off by default. Turn them on at the bottom of the rack. If macOS has Reduce Motion on, nothing flies or shakes; the damage just appears.
And if you keep firing for long enough, the terminal will eventually have something to say. I'll leave you to find it.
Serious work should still feel alive. Even the bad afternoons.
Everything the tools do, one by one, is in the Terminal Therapy docs. PonyMux is free for macOS: ponymux.com/download.








Top comments (3)
The 'None of these is a bug. That's why they're so tiring' line hit hard — especially 'The review that never ends.' One agent writes, another reviews, and the reviewer always has a nitpick. I've lived that loop: you stop arguing with the output and start resenting the process itself, which is a lonely feeling at 1am.
Bless being your favorite makes sense. Clearing the marks without undoing the work is the perfect metaphor for what this actually does — it doesn't fix the agent, it resets the human. And the one-click constraint is the clever part: walking away breaks flow, typing 'seriously?' poisons the next prompt. A tiny ritual in between is exactly right.
The 'review that never ends' is the one that gets me too — "A person knows when to say good enough." An agent never does. That and 'pulling teeth': I've had sessions where my patience ran out long before the task did.
Your line 'none of these is a bug' is the real insight. It's friction you can't file a ticket against, so it just accumulates. A one-click release valve beats another dashboard.
That exhaustion has a sibling I keep hitting: quota anxiety. Running Claude Code and Codex in parallel, the worst sessions end not with a bang but with a rate limit. I've started using QuotaTray, a tiny tray widget that watches Claude Code + Codex usage and warns before the limit — same spirit as your rack: one glance instead of a context switch. The native-first ethos here reminded me of this write-up on replacing a 137MB Electron menu-bar app with a 693KB native build: dev.to/xm-yang/i-replaced-my-137mb...
Bless as a superstition is perfect. Some afternoons the only thing between you and quitting is a small ritual.
This "review that never ends" pattern bit me on dual subscriptions too. What fixed it: stop treating either tool's footer as the truth. With two 5h windows plus two weekly buckets, the real limit is min(all four) — and no footer shows you that number. I once had 30% on Claude, 60% on Codex, with the Claude weekly bucket quietly at 15%; one big refactor killed that bucket first and I was hard-stopped. Three things that work: (1) put both reset times on one clock — the 5h window rolls from your last heavy use, not a fixed hour; (2) measure your burn per long session (mine averages ~12% of the weekly bucket, so ~8 long sessions is the real weekly budget); (3) switch tools when the min drops below one session's average burn. I keep all four buckets in one local menu-bar view now (my own QuotaTray) — but the "watch the min" rule works on paper too.