Your coding agent grinds for minutes while you sit there not moving. vibestretch nudges you to stretch inside that wait — never on a schedule, so a day of quick turns stays silent. POSIX sh, no deps, no telemetry. Claude Code, Codex, Gemini.
Hi Product Hunt.
The window where your coding agent is working and you are just sitting there
waiting is usually something to sell: it is where ad-supported developer tools
put their impressions. I wanted to put something useful in it instead. Everyone
knows the version of the day where you sit down to work, look up, and five
hours have gone by without you really moving.
It is not a break timer. A timer runs on a schedule and lands mid-thought,
which is why most people end up turning them off. This counts one thing: the
minutes an agent turn kept you waiting at the machine. A nudge needs the
current turn to have been running two minutes, five minutes of wait accumulated
since the last nudge, and a fifteen minute cooldown. A day of fast turns says
nothing at all, and there is nothing to snooze because it never interrupts you
in the first place.
Making that honest took more work than the feature. On macOS it reads the
system idle clock, so an agent grinding overnight adds nothing — that is the
agent's time, not your sitting. The counter used to read "7 min sitting", which
was a lie: the agent was working, I might have been standing in the kitchen. It
says "7 min of agent time" now.
Underneath it is a few POSIX shell scripts on three hooks. No dependencies, no
daemon, no telemetry, no network calls, and deliberately no links printed into
your terminal — that last one is a rule I do not plan to break. It works with
Claude Code, Codex CLI and Gemini CLI.
The thresholds are the part I am least sure of. Tell me they are wrong.