01
Idle
A dot per live session, flush with the notch. Blue is working, green is done, amber is waiting on you. On a Mac without a notch it floats as a pill under the menu bar.
02
Toast
A session finishes or blocks: the island widens, shows the one-line summary, and the agent says it out loud. Six seconds later it tucks itself away.
03
Approval
Switch approvals on and a gated command pins to the notch with Approve, Deny and Terminal. Decide without leaving what you’re doing. If you do nothing, the agent falls back to its own prompt.
Your agents,
out loud.
Claude Code and Codex speak up the moment they finish or need you — each in its own voice — and a command center in your notch lets you approve, deny or jump in without hunting for the terminal. Free, open source, and 100% offline.
Codex wants to run a bash command in billing.
- Claude finished in api-server.
- Codex needs you in billing.
- Claude is waiting on you over in docs.
- Approved Bash command in web.
- Codex, mobile: done.
- Claude finished in infra. Deploy plan is ready.
The bottleneck is you
The problem
Sessions finish. You’re looking elsewhere. Minutes go by.
Run several agents in parallel and the bottleneck becomes you noticing them. PingMyBell gives each agent its own voice, speaks a one-line summary the moment a session finishes or blocks, and puts a command center in your notch — approve, deny, or jump to the terminal without hunting for it.
The island
A command center that lives in your notch.
A frameless, non-activating overlay flush with the notch. It never steals focus, and it stays visible over full-screen apps.
A voice per agent
Know who finished without looking up.
Each agent gets its own system voice, so you know who’s talking before the sentence ends. Approvals jump the queue, and duplicates within five seconds are dropped.
Claude finished in api-server. All 214 tests pass.
In the app this is your Mac’s own speech engine — offline, with per-agent voice, rate and volume. Summaries are stripped of markdown, code and paths, and capped at 220 characters.
Everything else
Built for a fleet, not a single tab.
voice
A voice per agent
OS-native speech, a different default voice for each agent, with voice, rate and volume pickers per agent.
island
Approvals from the notch
Turn it on from the bell, and Claude Code and Codex commands and file edits are approved or denied in one click. It never steals focus.
island
Live ticker
While an agent works, the island shows what it is doing right now — the command, the file — without a sound.
keys
Triage hotkey
⌃⌥Space jumps to the session that has waited longest. Press again to cycle through the rest.
board
Jump to the session
Click any session to bring forward the app it runs in — any terminal, or the Claude desktop app — and its tmux pane if it has one. No permissions needed.
voice
Knows when to hush
If that session’s terminal is already in front of you, a chime replaces the sentence. Quiet hours mute it overnight.
voice
Morning digest
The first event of your day gets a one-sentence recap of what the fleet did since you left.
board
The session board
Every live session, its state and how long it has been in it, with the last 50 events each.
Local-first, verifiably
Nothing leaves your Mac.
The only network traffic is loopback. See exactly how an event becomes a sentence.
- 01
100% offline
Speech is your OS’s own engine. No cloud TTS, no LLM calls, no accounts. The only network traffic is loopback.
- 02
Fails open
The hook shims exit 0 silently on any error, or when the app isn’t running. A broken PingMyBell can never block or change what your agent does.
- 03
Your machine only
The ingest server binds 127.0.0.1 behind a per-install token. Config and history live in ~/.pingmybell/, readable by you alone.
- 04
Free and MIT
No subscription, no seat, no telemetry. Read every line of it on GitHub.
Works with
Claude Code
Spoken callouts
Opt-in: approve or deny gated tool calls (or hand them back to the terminal), and answer questions, from the island.
Codex CLI
Spoken callouts
Opt-in: approve or deny command runs and file edits from the island, when Codex runs in a mode that asks for approval.
Ring the bell.
Build it in three commands, then hook in your agents with one more. Existing settings are merged, never overwritten, and uninstall removes exactly what was added.
The full loop runs today on macOS 13+ and is gate-verified on real notch hardware. There are no signed prebuilt releases yet, so you build the app yourself. Windows is scaffolded against the platform APIs but has not been run there.
git clone https://github.com/Davidb3l/pingmybell && cd pingmybell
bun install
bun run tauri build/Applications/PingMyBell.app/Contents/MacOS/pingmybell install-claude