The problem
I use Claude Code every day. The issue is that I keep getting pulled into other work, and when I come back Claude's been done for 15 minutes, or it's been stuck waiting for a permission I didn't see.
I wanted something that would sit on my desktop and keep me in the loop without having to keep the terminal visible.
What I built
CC-Beeper is a floating macOS widget shaped like a retro pager. It started as a simple status monitor but grew into something more.
It's got a little LCD screen that shows what Claude is doing in real time. But more than just monitoring, you can interact through it: approve or deny permissions, talk to Claude by voice, get spoken recaps when tasks finish. Four auto-accept modes (Strict, Relaxed, Trusted, YOLO) if you don't want to be asked. Hotkeys for everything. Always on top.
I'm a designer and I love retro stuff, so went a bit far with the design: 10 color themes, pixel art animations, three sizes, clap-to-dictate. Everything runs locally, no accounts, no telemetry.
How it works
CC-Beeper uses Claude Code's hook system:
- CC-Beeper runs a local HTTP server via Apple's NWListener
- Claude Code POSTs events (tool use, permission requests, task completion) to it
- CC-Beeper parses events and updates the pager UI
No polling. No file watching. Direct event delivery.
Tech stack
100% Swift + SwiftUI. All Apple native frameworks, zero external dependencies. On-device speech recognition (WhisperKit + Apple Speech) and TTS (Kokoro + Apple). No Electron, no Node, no runtime.
Background
I'm a product designer, not a developer. The whole app is vibe coded with Claude Code. First open source project, for sure imperfect, but I wanted to see how far I could push vibe coding as a non-technical person. Not affiliated with Anthropic.
Try it
Free and open source.
-
Install:
brew install --cask cc-beeper - Repo: github.com/vecartier/cc-beeper

Top comments (0)