You know the moment. You hit enter, the agent starts "thinking," and for the next 15 to 45 seconds you're left watching a blinking cursor that gives you nothing โ not a percentage, not a heartbeat, nothing. Too short to context-switch into something else. Too long to just sit there. So you do the thing everyone does: you tab away, then tab right back to check if it's done, then again, then again. Polling by hand, which is exactly the busywork agents were supposed to save you from. ๐ฉ
VibeAudio kills that dead zone. ๐ถ Music while your agent thinks. A chime the instant it's done. That's the whole pitch โ and it's a good one.
๐คซ The problem is the silence, not the wait
15 to 45 seconds is a weird length of time. It's long enough that a static screen starts to feel broken โ did it hang? Is it stuck? โ but short enough that switching tasks just means you'll be back in a few seconds to check anyway. VibeAudio's bet is simple: fill the gap with sound, and you stop needing to look at all. You keep reading, writing, or just breathing โ and you know, by ear, the instant it's your turn again.
๐ง Eight genres, all synthesized, zero assets
Lo-Fi Focus โ. Chill Synthwave ๐. Cozy 8-Bit ๐น๏ธ. Melodic Electronic โก. Midnight Jazz ๐ท. Zen Ambient ๐. Sparse Piano ๐น. Deep Drone ๐ซ๏ธ. Every single one is generated in real time by pure Node.js synthesis โ no audio files, no native bindings, nothing to download. And it's not just background noise: tracks build in tiers as the agent digs deeper into a turn, so a quick lookup sounds different from a long, gnarly refactor.
๐ It's not just "done" โ it's outcome-aware
This is the detail that separates a gimmick from a tool. VibeAudio doesn't play one generic "ding." It plays three:
- ๐ Success โ an ascending glassy bell. Output's ready.
- ๐ฅ Failure โ a soft descending minor chord. Something broke, and silence would've lied to you.
- ๐ Your turn โ a rising, unresolved fifth, for when the agent is stuck waiting on a permission prompt.
And if you hit Ctrl+C? Silence, on purpose. An aborted run never gets reported as a win.
๐ฑ Same repo, same sound
Your working directory seeds the arrangement, so ~/work/api always sounds like ~/work/api โ same progression, every time you come back to it. It's not random per run; it's a fingerprint for the project you're in.
๐ Drop it into what you already use
VibeAudio ships three ways to integrate, and you pick based on your setup:
- ๐ช Agent hooks (recommended) โ starts the moment you submit a prompt, stops the moment the agent finishes. No guessing at a grace window. Works with Claude Code, Codex, Cursor, Grok, Gemini CLI, Copilot CLI, and Qwen Code.
- ๐ฏ The wrapper โ
vibe <command>times the process itself. Perfect for anything that exits when it's done:vibe npm test, one-shot agent calls, CI runs. - ๐ MCP โ for clients without a hook system, like Claude Desktop and Antigravity. The assistant decides when to call
vibe_play, so it's a suggestion rather than a guarantee.
It also stays out of your way when you don't need it: a 1.5-second grace window keeps fast commands silent, exit codes stay honest so vibe claude && deploy behaves exactly like it would without the wrapper, and there's a vibe --mute that auto-expires in an hour so you never forget it's still on.
๐ Try it in three commands
npm i -g github:kiril6/vibeaudio
vibe --install-hooks
vibe --preview jazz
Install it, wire it into your agent's hooks, and audition a genre before you commit to one. That's it. ๐ฌ
If you spend your day waiting on agents, VibeAudio is a genuinely small idea with a genuinely large payoff: fewer alt-tabs, fewer "is it done yet" glances, and an actual reason to trust the silence when there isn't any. ๐งโจ
Check it out: kiril6.github.io/vibeaudio

Top comments (0)