How do you stay aware of what your AI coding agents are doing?
I've been running Claude Code, Cursor, and Codex pretty heavily for the last few months and I keep hitting the same loop:
1. Start a task in one agent
2. Switch to something else (Slack, Twitter, another terminal)
3. Come back 30-40 minutes later
4. Agent finished 35 minutes ago. Or worse, it's been waiting for my approval the entire time.
The more agents I run, the worse it gets. There's no unified way to know what's happening across them.
Curious what other people's setups look like:
- Do you just keep terminals visible and check manually?
- Built any custom notification scripts?
- Use something like ntfy or Pushover?
- Just... accept the wasted time?
I've been building something in this space (push notifications + approval flows for AI agents) and I'm trying to understand if everyone's workflow is as janky as mine, or if some of you have figured out something clever.
Would love to hear what's working and what's not.


Replies
i think you need to maintain context locally somewhere , i ran into similar issue but the problem is if context gets large either replies becoe too slow from agent or it eats up lot of token per message
Pushary
@pranay19
"You act as the architect" is the right frame, and notice what you're really doing: not watching the agent, gating it. You stay in the loop by being the approval step, not the babysitter. That's the healthy version of this.
The catch your own example reveals is that it works because you were there. Write, build, deploy, verify screenshots, that's one continuous session where you're sitting in the chat approving inline. It holds perfectly until you step away mid-task, and on a deploy that's the worst moment to be gone: the agent hits the gate, freezes, and your approve-as-you-go flow becomes a stalled terminal waiting on a yes you're not there to give.
So the inline-approval pattern is right for synchronous work and has exactly one failure mode: it assumes you're present. The whole thread's pain is the async case, the architect walked away and the junior is politely stuck. That's the only gap I'm filling, take the same approve-before-it-acts gate you already trust and let it reach your phone when you're not in the chair.
Question, since your flow clearly works: do you ever start something and step away, or only run the agent when you can sit and approve live? If it's the latter, you've solved this by never leaving, which is valid, it just caps how much you can run at once. Curious if that's a choice or a constraint.
@aadilghani stepping away genrally meant everything stops , its not running continously!
Pushary
@pranay19
Right, and that's the part that turns a small annoyance into a real cost. It's not that you walked away and missed an update, it's that walking away halts the whole thing. The agent isn't running while you're gone, it's parked, waiting on you, doing nothing. So every minute you're away is a minute of zero progress, not background progress you'll catch up on later. Stepping away doesn't cost you awareness, it costs you throughput.
Which means the question underneath this is sharper than notifications: why does it stop at all? It stops because it hit something it wasn't allowed to do without you, and you weren't there to say yes. So there are really two fixes, and they're different. One is let it ask you remotely, you approve from your phone, it unparks immediately instead of waiting for you to physically come back. The other is let it not have to ask in the first place for the safe stuff, set a policy once so routine actions clear themselves and it only parks on the genuinely risky calls. The first shrinks the wait. The second removes most of the waits entirely.
That combination is the actual fix for "everything stops when I step away," approve the few things that truly need you without being at your desk, and pre-authorize the many things that don't so it keeps moving on its own. The goal is that stepping away stops meaning stepping on the brakes.
Question, since you've felt this directly: when it parks waiting on you, is it usually blocked on something genuinely risky, or on routine stuff it could safely have done if you'd told it the rules up front? Because if it's mostly routine, you don't primarily have a notification problem, you have a permissions problem, and the fix is letting it do more unattended, not catching the stops faster.
I'm a marketer who builds, not a deep engineer, so I run fewer agents than you. But the loop you described kills me too. Come back, it finished 35 min ago, or worse, it's been idle waiting on my approval the whole time.
What works for me is boring:
I batch the approval-heavy tasks and check them at set times instead of babysitting one live. And I front-load the spec so the agent needs fewer mid-run approvals. Most of my wasted time wasn't the agent finishing early, it was me under-briefing it, so it stopped to ask.
Beyond that, I keep terminals visible and check manually. The exact janky setup you're trying to kill. So no, you're not alone.
On your product: the "it's done" ping is nice. The one I'd pay for is "it's been blocked waiting on you for 12 minutes." The stuck-and-burning-your-time alert is the real pain. Lead with that.
Pushary
@nipuntaneja
You just gave me the sharpest piece of positioning advice in the whole thread, and you're right: lead with the stuck alert, not the done ping. "It's done" is a nice-to-have everyone's already half-solving. "It's been blocked waiting on you for 12 minutes" is the one that has a dollar attached, because that's the alert that's actively stopping the bleeding instead of just reporting a finish. Done is information. Stuck-and-counting is a refund. I've been leading with the wrong one, and a marketer who builds is exactly the person who'd catch that. Taking it.
But the more valuable thing you said is the diagnosis you almost threw away: "most of my wasted time wasn't the agent finishing early, it was me under-briefing it, so it stopped to ask." That reframes the entire problem. Half the approval interruptions aren't the agent needing a decision, they're the agent needing information you could have given up front. Which means the fix isn't only better alerts, it's fewer interruptions to alert about. Your front-loaded spec is doing the real work, you're not catching the stops faster, you're preventing them. That's a tier above what most people in this thread are doing.
So the honest version of the product is two moves, not one. Prevent the avoidable stops (good briefing, declared boundaries, so it only asks when it genuinely must), and make the unavoidable ones impossible to miss and fast to answer. You've nailed the first half by hand. The second half is the stuck-timer alert you said you'd pay for. They're complementary, the better your spec, the rarer the alerts, the more each one actually means "your brain is required."
And for the record, the "marketer who builds, not a deep engineer" framing matters to me more than you might think, because if this only works for people running six terminals it's a toy for power users. The fact that the loop kills you at two agents is the signal it's a real problem, not a hobbyist one.
Question back, since your batching approach is clearly tuned: when you batch approval-heavy tasks and check at set times, how do you decide the interval, gut feel, or have you noticed a point where waiting too long to check costs more than the babysitting would have? I'm trying to figure out whether the stuck-timer should just be a number you set, "ping me if anything's been blocked longer than X," and what X actually is for real people.
This feels like a real workflow gap. As more people run multiple coding agents in parallel, the problem becomes less about starting tasks and more about knowing when human attention is actually needed. The valuable part, in my view, is not just notifications, but context: is the agent progressing, blocked, waiting for approval, or asking for a decision?
A lightweight visibility layer across agents could be very useful, as long as it avoids becoming another noisy notification stream ;-)
Pushary
@grace_vargas
"Knowing when human attention is actually needed" is the cleanest way anyone's stated the goal, and it quietly redefines the product. The job isn't notifying, it's gatekeeping attention, deciding which of the thousand things an agent does actually deserves a human and silently absorbing the rest. A notification layer broadcasts. An attention layer protects. Different job, and yours is the right one.
Your distinction between blocked, waiting for approval, and asking for a decision is sharper than it looks, too, because those aren't the same urgency. Blocked might be a transient error that self-resolves. Waiting for approval is the silent time-killer. Asking for a decision is the one that genuinely needs your judgment. Collapsing them into one "needs attention" ping loses exactly the information that tells you whether to drop everything or finish your coffee.
And your winking caveat is the entire design constraint, not an aside. "As long as it avoids becoming another noisy notification stream" is the line every tool in this space dies on. The fix is counterintuitive: the value isn't in what it shows you, it's in what it refuses to. A layer that pings on everything is worse than no layer, because you mute it, and then you miss the one that mattered. The discipline is aggressive silence, dark by default, and an interruption is a promise that your brain is genuinely required.
That's the bet behind Pushary, the lightweight cross-agent layer you described, built so a ping always means something. Question back, since you clearly think about the noise problem: where would you set the default, would you rather it err quiet and risk missing a borderline case, or err loud and trust you to tune it down? People split hard on this, and the default basically decides whether they trust it on day one or mute it by day two.
This loop is painfully familiar — coming back to find the agent finished 30 minutes ago or was waiting on my approval the whole time. Right now I just keep terminals visible and check manually, which clearly doesn't scale. A unified notification + approval layer across agents sounds exactly like what's missing.
Pushary
@doganakbulut
You're describing the manual baseline almost everyone in this thread started from, keep terminals visible and check by eye, and you've already named why it fails: it doesn't scale. Worth being precise about why, though, because it's not that watching terminals is hard, it's that it's a polling loop with you as the CPU. One agent, glance occasionally, fine. Three agents, you're now a human cron job checking screens on an interval, and the interval is always either too frequent (you're babysitting) or too slow (you missed the 30-minute wait). There's no setting that works, because manual polling can't win against parallelism. The math is against you.
The flip is push instead of pull. Stop being the thing that checks, and let the agents be the thing that reports. Done, blocked, needs-a-decision, the three states worth interrupting you over, delivered when they happen instead of discovered when you remember to look. Then the number of agents stops mattering, because you're not allocating attention to each one, you're receiving an alert from whichever one actually needs you. Six silent agents cost you nothing. The one that's stuck taps your shoulder.
That's exactly the unified layer you said is missing, and you described it correctly, the value is the unification, one inbox across tools instead of one habit per terminal. Question back, since you're at the manual stage: when you check manually, what's your actual interval, every few minutes, or only when you happen to surface from something else? I'm trying to map how people poll today, because the honest pitch is "replace your polling interval with zero," and I want to know what interval I'm actually saving them from.
I'm a marketer who builds, not a deep engineer, so I run fewer agents than you. But the loop you described kills me too. Come back, it finished 35 min ago, or worse, it's been idle waiting on my approval the whole time.
What works for me is boring:
I batch the approval-heavy tasks and check them at set times instead of babysitting one live. And I front-load the spec so the agent needs fewer mid-run approvals. Most of my wasted time wasn't the agent finishing early, it was me under-briefing it, so it stopped to ask.
Beyond that, I keep terminals visible and check manually. The exact janky setup you're trying to kill. So no, you're not alone.
On your product: the "it's done" ping is nice. The one I'd pay for is "it's been blocked waiting on you for 12 minutes."
Pushary
@nipuntaneja
You just handed me the best positioning note in the thread: lead with the stuck alert, not the done ping. "Done" is a nice-to-have everyone's half-solving. "Blocked, waiting on you for 12 minutes" is the one with a dollar attached, because it's actively stopping the bleeding instead of reporting a finish. Done is information, stuck-and-counting is a refund. Taking it.
But the line you almost threw away is the more valuable one: most of your wasted time wasn't early finishes, it was under-briefing, so it stopped to ask. That reframes the whole problem. Half the interruptions aren't the agent needing a decision, they're the agent needing info you could've front-loaded. So the real fix is two moves, not one: prevent the avoidable stops with a better spec, and make the unavoidable ones impossible to miss. You've nailed the first half by hand. The stuck-timer is the second.
And the "marketer who builds, not a deep engineer" part matters more than you'd think, if this only works at six terminals it's a power-user toy. The fact that it kills you at two is the signal it's a real problem.
Question, since your batching is clearly tuned: when you check at set times, how'd you pick the interval, gut, or did you hit a point where waiting too long cost more than babysitting would have? I'm trying to figure out if the stuck alert is just a number you set, "ping me if anything's been blocked over X," and what X actually is for real people.
Propane
the thing that gets me is how much the "come back to find the agent stuck" pattern costs in context reload, not just time. you don't just lose the 35 minutes — you lose another 10 re-orienting to where you were. what I actually want isn't just a ping, it's a lightweight summary of what happened while I was gone so I can pick up without the mental scramble.
Pushary
@atherkildsen
You've put your finger on the cost everyone undercounts. The 35 minutes is the visible loss, but the 10-minute reload is the expensive one, because it's not just time, it's the mental scramble of rebuilding what you had loaded before you left. And it's worse than linear: you have to reconstruct what the agent did and what you were thinking when you set it off, two contexts gone cold at once. The ping tells you to come back. It dumps you at a terminal with no memory of why you're standing there.
Which means a bare notification actually fails at the exact moment it succeeds. It pulls you back and then abandons you to the scramble. The alert solved "when," and left "what" entirely unsolved, and "what" is where your 10 minutes goes. A ping without a summary is just a faster way to start being confused.
So the thing you want, a lightweight summary of what happened while you were gone, isn't a nicer notification, it's a different unit. The payload is the product. "Agent's done" versus "agent changed these 3 files, tests pass, blocked on this one decision" is the difference between starting the reload and skipping it. The summary is what lets you pick up at full speed instead of cold, because the re-orientation already happened in the notification instead of in your head at the terminal.
That's exactly the bet behind Pushary, the alert carries the handoff, not just the fact that one's needed. Question, since you've clearly felt the reload tax precisely: what's the minimum that actually kills the scramble for you, just what changed, or do you also need what you'd asked it to do, the original intent, because that's the context that goes coldest fastest? I keep wondering whether the summary needs to remind you of your own plan, not just report the agent's work.
memi
This is one of the reasons we built Memi as more of a workbench than a chat box. Once multiple agents are touching specs, research, and Figma files, visibility matters as much as output.
Pushary
@sarveshsea
"Workbench, not a chat box" is the right instinct, and it points at something most of this thread has been circling without naming: chat is a fundamentally bad container for multi-agent work. A chat box is linear and single-threaded, one conversation, scrolling down, but the actual work is parallel and branching, multiple agents touching specs, research, and Figma at once. You're forcing a parallel reality through a serial interface, and the visibility problem is partly just that mismatch. The workbench gives the work the shape it actually has.
Your second sentence is the one I'd underline, though: visibility matters as much as output. That's the part teams discover late and painfully. When one person and one agent share a chat, visibility is free, it's all right there in the scroll. The moment you've got multiple agents touching shared artifacts, output without visibility is actively dangerous, because two agents can edit the same spec or the same Figma file and you've got conflicting truth with no one watching the seam. At that scale visibility isn't a nice view, it's how you prevent silent collisions.
Sounds like we're attacking adjacent faces of the same shape. Memi is the spatial layer, a place where the parallel work lives and stays visible because it's laid out instead of buried in a transcript. I'm on the temporal layer, the alert when one of those agents crosses into a state that needs a human, blocked, done, waiting on a decision. A workbench shows you everything at once when you look, a notification layer taps you when you're not looking. Same goal, two senses.
Genuine question, since you've built the spatial version: on a workbench with multiple agents touching shared specs and Figma files, how do you handle the moment two of them want the same artifact, surface the conflict for a human, lock it, or let them branch and merge? Because that collision is the thing I can't see how to solve with notifications alone, and I suspect the workbench is actually the better place to catch it. Curious where you landed.
Same loop here, exactly. The approval-waiting one is the worst because coming back to find it stalled 35 min ago on a yes/no I'd have answered instantly.
Pushary
@heather_byrd
That specific sting, "stalled 35 minutes on a yes/no I'd have answered instantly," is the one that should be illegal, and the reason it hurts more than a slow task is the mismatch. The cost of answering was one second. The cost of not being asked was 35 minutes. When the gap between the effort and the waste is that lopsided, it doesn't feel like a delay, it feels like waste, because nothing hard happened, you just weren't in the room for a trivial question.
And the trivial part is exactly why it's so dangerous. A scary approval at least justifies the wait, you'd want to think about that one. But the instant yes/no slips through because it doesn't look like it matters, so nothing flags it, so it sits. The cheapest decisions cause the most expensive stalls, precisely because they're cheap enough to be invisible until you walk back and find the whole thing parked on one.
That's the entire reason to get the question off the terminal and onto your phone, a one-second answer should cost one second, not half an hour of you being elsewhere. Approve from the lock screen, it unparks immediately, the trivial stays trivial. Question, since you've clearly lived this: when you come back to one of these, is it usually a genuine judgment call, or is it stuff the agent could've just done if you'd pre-authorized it? Because if it's mostly the latter, the real fix is letting it not ask at all for the safe stuff, and only pinging you for the few that actually need a human.
Keeping multiple terminals open works with one agent. Once you're running three or four it gets messy fast.
Pushary
@hassan_ismail_rebe
That's the exact breakpoint, and it's worth being precise about why three or four is where it snaps rather than some gradual decline. With one agent, watching is basically free, it's one glance, one source of truth, your attention isn't really divided. The cost doesn't scale linearly as you add agents, it scales worse, because now you're not just watching more screens, you're context-switching between them, holding which agent is doing what, and the misses compound: while you're checking agent one, two finished and three got stuck, and you find out about both late. Manual watching has a hard ceiling, and three or four is where most people hit it.
The deeper reason is that keeping terminals visible is a pull system, you have to go look for the information, and pull systems don't survive parallelism. Push does. Instead of you checking four terminals on some interval that's always wrong, the agents tell you when one actually needs you, done, blocked, or waiting on a decision. Then four agents costs the same attention as one, because you're not allocating a watch-budget per terminal, you're just receiving the one alert that matters. Three silent agents are free. The stuck one taps you.
That's the whole jump Pushary is built for, exactly the point where visible-terminals stops scaling. Question, since you're clearly at or near that breakpoint: when it gets messy at three or four, what actually breaks first for you, missing that one finished, or losing track of which agent is doing what in the first place? I'm trying to figure out whether the core pain is the missed alert or the lost mental map, because they need slightly different fixes.
How are you thinking about prioritization? For example, I'd want a different notification for ''task completed'' versus ''agent is blocked and needs approval''. The second one is far more urgent.
Pushary
@johanna_john1
You're exactly right that they're different urgencies, and the way I think about it is that the two events aren't even the same type of thing. "Task completed" is informational, the work is safe, nothing is waiting, you can read it whenever, it's a receipt. "Blocked and needs approval" is a live cost, the agent is frozen and burning idle time until you respond, and on a parallel setup it might be holding up everything downstream of it. One is a record. The other is a bill that's actively running. They should not look, sound, or feel the same on your phone.
So the prioritization isn't a nice-to-have ranking, it's the core design, and I'd actually go further than two tiers. There's a third that's sneakily the most urgent: "blocked and has been waiting X minutes." Freshly blocked is a heads-up. Blocked for 20 minutes is the thing you'd pay to never let happen again, because that's the silent-stall everyone in this thread keeps describing. So the model is roughly: completed is low and silent-ish, needs-approval is high and unmissable, and time-in-blocked escalates the urgency the longer it sits. The clock is part of the priority, not just the event.
The other half of prioritization is the part people forget: it's not only how loudly you alert, it's whether you alert at all. The fastest way to ruin the urgent tier is to fire the boring one too often, because then the channel gets muted and the urgent one dies with it. So "task completed" probably shouldn't even be a push for most people, it's a thing you check, while "blocked, needs you" is the one that's allowed to interrupt. Protecting the urgent signal means being stingy with the routine one.
Question back, since you've clearly thought about the tiers: for the completed case, would you even want a push, or would you rather it sit silently in a list you glance at, and reserve actual interruptions purely for the blocked-needs-you case? I keep going back and forth on whether "done" earns a notification at all, or whether pushing it just trains people to ignore the channel.