macOS · menu bar only · open source

Native menu bar alerts for terminal AI agents.

overwatchr watches Codex, Claude Code, and OpenCode, quietly queues the sessions that need you, and lets you jump back to the right terminal tab with one shortcut when you are ready.

No Electron No Hammerspoon Ghostty · iTerm · Terminal

Best on Ghostty, iTerm, and Terminal.app. Hooks install in one command. No Electron, no Hammerspoon, no tmux required.

One-line install
curl -fsSL https://raw.githubusercontent.com/atiti/overwatchr/main/install.sh | bash

Installs the CLI and menu bar app. Optional hooks for Codex, Claude Code, and OpenCode are one command away.

Attention queue
Overwatchr queue widget showing active terminal AI alerts
Settings
Overwatchr settings pane with shortcut and sound controls
terminal swarm log
• Waited for background terminal
• Running Stop hook: notifying overwatchr
Stop hook (completed)

$ overwatchr hooks install all --scope user
Installed codex hooks (user)
Installed claude hooks (user)
Installed opencode hooks (user)

$ Ctrl+Opt+Cmd+O
Jumped to markster-mcp-api-mapper · ttys099 and marked it seen.
Codex Claude Code OpenCode Ghostty iTerm Terminal.app
20-second tour

The whole flow, without a dashboard detour.

Overwatchr is deliberately small: an agent finishes, the queue updates, and when you are ready, one shortcut takes you back to the right terminal. That is the product loop.

1

An agent stops or needs input. A local hook writes an event.

2

The menu bar quietly shows the alert instead of hijacking your focus.

3

You press the jump shortcut and land back in the right tab.

Product Hunt launch clip
Queue view showing live alerts in Overwatchr
terminal swarm log
• Running Stop hook: notifying overwatchr
Stop hook (completed)

$ Ctrl+Opt+Cmd+O
Jumped to slackening · ttys101
Settings view showing shortcut and sound controls
20-second tour
Why this exists

Parallel agents are fast. Context switching is not.

When several agents are running at once, the real problem is staying focused on your current task while still noticing when another terminal needs you. overwatchr keeps those pings quiet, visible, and easy to act on: one queue, one shortcut, and a fast jump back to the right tab when you are ready.

01

Hooks emit local events

Codex, Claude Code, and OpenCode write append-only JSONL events into ~/.overwatchr/events.jsonl.

02

The menu bar becomes your queue

Fresh alerts stack in one native menu bar widget, with seen-state, jump feedback, sounds, and a configurable global shortcut.

03

Jump back without tab hunting

Overwatchr focuses the right Ghostty, iTerm, or Terminal tab using native macOS APIs plus terminal-specific matching.

Built for real operators

Fast enough to disappear. Clear enough to trust.

The design goal is not “more notifications.” It is quiet confidence: a small control tower for AI-heavy terminal workflows, with fewer false positives, fewer lost tabs, and less background cognitive drag.

Native macOS

Swift, SwiftUI, AppKit, AppleScript, Accessibility APIs. No runtime dependency maze.

Open source

MIT licensed, GitHub-first, easy to audit, easy to adapt, and built to work with terminals you already use.

Operator-friendly behavior

Frontmost sessions auto-suppress redundant alerts, active queues are deduped, and event logs stay inspectable.

Product proof

The widget is the product.

No dashboard detour. No giant window. No setup maze. The experience lives in the menu bar and stays out of your way until it matters.

Settings view showing shortcut, sounds, launch at login, and shell sync
Compact settings for shortcut capture, shell sync, sounds, and launch-at-login.
Queue view showing live alerts in Overwatchr
Queue view with live alerts, jump actions, and fast visual triage.
Get started

From zero to useful in minutes.

Install the app, grant Accessibility, install hooks, and let your agent swarm get loud only when it actually matters.

1

Run the one-line installer.

2

Launch Overwatchr and enable Accessibility.

3

Run overwatchr hooks install all --scope user.

FAQ

Questions people ask before installing.

Does it work with my existing terminal setup?

Yes, if you use Ghostty, iTerm, or Terminal.app. Overwatchr is designed to sit on top of the terminals you already use, not replace them.

Do I need tmux, Hammerspoon, or a companion daemon?

No. Overwatchr uses native macOS APIs and local JSONL events. No Electron shell, no Hammerspoon dependency, no tmux requirement.

Why does it ask for Accessibility access?

That permission lets Overwatchr focus the correct terminal tab or window when you jump from the queue.

Is it only for Codex?

No. Codex is supported, but the hook bridge also supports Claude Code and OpenCode, and the local event format stays simple by design.

Ship more, context-switch less

Try overwatchr on your own agent swarm.