I tried to sell the minutes you spend waiting for your coding agent A developer built vibestretch, a Claude Code plugin that nudges users to stretch during long waits for their coding agent, after exploring and rejecting the idea of selling ads in the terminal. The plugin tracks idle time and only prompts when the agent has been running for at least two minutes, with five minutes of accumulated waiting time and 15 minutes since the last nudge. The developer notes that the ad-supported model failed due to a tiny market and hostile audience, citing EthicalAds' $124K January payout and CodeFund's shutdown. The day that got me started looked like this. I sat down at ten in the morning, Claude Code was grinding through a refactor, and I was watching the output scroll, answering a prompt here and there. When I next looked at the clock it was past three. I had not stood up once. The agent did its job. Mine, apparently, was sitting. The embarrassing part: my first thought was not "I should fix this." It was "I wonder if this window is worth money." Think about what that wait actually is. A developer in front of a terminal, mildly bored, eyes parked on a stream of tool calls. That is an advertiser's dream slot. So I spent a week checking whether you could sell it: show ads to developers in the terminal while their agent works. It is not a crazy idea. Sourcegraph already ships Amp Free, an ad-supported tier of their coding agent with real dev-tool advertisers in the output. The slot exists and someone is selling it. The numbers killed it anyway. EthicalAds, the biggest player in developer advertising, paid out about $124K this January. That is the market leader. CodeFund, the closest thing to a direct predecessor, burned around $50K a month and shut down in 2020, a year or two short of breaking even. And the one time somebody printed promo into other people's terminals at scale, npm in 2019, the backlash was loud enough that npm banned the practice in its terms of service. That lesson stuck with me: the terminal is somebody's workspace. Printing ads into it reads as vandalism. Tiny market, dead predecessor, hostile audience. I wrote NO-GO in my notes. But the window would not leave me alone. The wait is real, the attention is real. I had spent a week trying to hand it to the wrong side. So I built the opposite thing. vibestretch is a Claude Code plugin that watches how long the agent has kept you waiting and, once in a while, prints one line: 🧘 Slow neck rolls. 5 each direction. · vibestretch · 7 min of agent time One stretch, or a micro workout, or a 20-20-20 eye break. That's all it does. The part worth explaining is when it speaks. It is not a break timer. Timers fire on a schedule, which means they fire mid-thought, which is why most people turn them off within a week. vibestretch only counts the minutes an agent turn kept you waiting, and a nudge needs three things at once: the current turn has been running at least 2 minutes, at least 5 minutes of waiting have piled up since your last break, and 15 minutes have passed since the last nudge. A day of quick turns produces silence. There is nothing to snooze because it never interrupts anything. Making the number honest was more work than the feature. The first version printed "7 min sitting." That was a lie. The agent had worked seven minutes; I might have been in the kitchen. Now the plugin reads the macOS idle clock, so the minutes stop counting when you walk away, and an agent grinding overnight adds nothing. The label says "7 min of agent time" because that is the thing it actually measures. A counter that lies about something small is a counter you stop trusting about everything. I should also tell you what the first real tester said. He ran it for three days and told me he would not keep it. He moves around enough during the day anyway. Fair. If you already stand up on your own, this has nothing for you. It is for the people who look up at 3pm and realize the last time they moved was breakfast. Under the hood it is a few POSIX shell scripts on three hooks. No dependencies, no daemon, no telemetry, no network calls. And no links printed into your terminal, ever. That one is not a technical constraint. It is the npm lesson written into a rule. The repo: https://github.com/Eliasjunit/vibestretch https://github.com/Eliasjunit/vibestretch . The thresholds 2/5/15 are the part I am least sure about. Tell me they are wrong.