Launched this week

CC-BEEPER
A floating macOS pager for Claude Code
246 followers
A floating macOS pager for Claude Code
246 followers
Native macOS companion for Claude Code. A floating retro pager that shows you what Claude is doing so you stop babysitting your terminal. Real-time LCD status with pixel art animations Four auto-accept modes (Strict / Relaxed / Trusted / YOLO) Voice input and spoken recaps Hotkeys, always on top Customisable themes, size, voice 100% local. Zero dependencies. Open source.








CC-BEEPER
@vecartier Love it! Damn, I'm a sucker for good designers who divine it and ship products. Apps like this make digital interactions more alive, vibrant - nice job Victor ;).
CC-BEEPER
@dominik_bartosik Thank you so much, it really means a lot
Product Hunt
CC-BEEPER
@curiouskitty Hey, I'll try to answer this the best I can (with claude's help) since I'm not technical. It was mostly trial and error, prompting Claude Code to fix issues / change the way it works to my satisfaction. I should add that I ask a couple developer friends to check if it had any glaring security issues or problems, but so far they didn't spot any.
Claude Code's blocking hooks are basically an HTTP call that waits for a response. CC-Beeper runs a tiny local server, and when a permission request comes in, it just keeps that connection open while the widget asks you what to do. When you click Allow or Deny, it writes the answer back on that same open connection and closes it. Curl gives it around 55 seconds to respond before it gives up.
Re, the reliability stuff:
- Multiple sessions: pending prompts queue up in order, so answering one surfaces the next.
- Session moved on (you answered in the terminal instead, or Claude auto-resolved): it detects it from the next hook event and quietly releases the stuck prompt.
- Claude Code or CC-Beeper crashing: connections get cleaned up on drop, and a 5-minute watchdog resets the UI as a backstop.
- Restarts and Claude updates: the hook config in settings.json reads the port fresh every time, so nothing's baked in. If CC-Beeper isn't running, the hook fails cleanly and Claude falls back to its normal terminal prompt, so you're never locked out.
- Sleep/wake: honestly the weakest spot today. No explicit handler, stuff just times out and recovers.
It's probably imperfect, and if someone more technical / knowledgeable than me knows and want to improve it, it'd be amazing. That's also why I made it open source :)
CC-BEEPER
@vecartier That balance makes total sense - the whole point is to not babysit the terminal, so cramming too much on the LCD defeats the purpose. The "just enough to know when to intervene" approach is the right call. Appreciate the honest answer on the permissions side too, that kind of transparency is rare.
CC-BEEPER
@razazuBest policy there is in my book :)
CC-BEEPER
When you have multiple Claude sessions running at a time, do we get multiple pages, or does the page screen get increased with each Claude session?
CC-BEEPER
@nayan_surya98 So you keep one beeper at all times but it works across sessions. What i tried is creating a priority order between states across sessions (e.g. needing a permissions supersedes working/done state for another). But it's far from perfect. Honestly, I lack the technical skills to go the extra mile and I want it to remain a fun week-end project :)
I’ve run into this myself—I often assume Claude would’ve completed the task by now, but when I check, it’s usually stuck on some permission issue. Love the idea—how do you detect when Claude needs permission? Do you poll for it continuously?
CC-BEEPER
As a Claude Code user- this is clever. Does it work with the new agent/skill features too?
CC-BEEPER
UXPin Merge
Love the retro pager concept. It makes something pretty technical feel way more approachable. How did you decide what states and signals were most important to show in real time?
CC-BEEPER