The macOS Notch App
bohay-notch is a small native macOS app that ships alongside bohay. It puts your agents where you are already looking: a panel that drops out of the MacBook notch, showing what every agent is doing right now.
It is a companion, not a requirement. bohay works fully without it, and the notch app is read-mostly: everything it does, you can also do in the terminal.
Try it
Section titled “Try it”The replica below behaves like the real thing. Hover the pill to open the panel, use the three tabs to walk through what it does, and click a row to see it jump.
brew install --cask --no-quarantine RizRiyz/bohay/bohay-notch macOS 15+ · Apple silicon · or download the .dmg Why a second app at all
Section titled “Why a second app at all”An agent that is working needs nothing from you. An agent that is blocked needs you now, and the cost of not noticing is the whole point: it sits there, burning nothing, until you happen to look.
bohay already solves this inside the terminal: the agents sidebar, the ⠶ ctrl
tab, an optional chime. But all of those assume the terminal is on screen. The
notch app covers the case where it is not: you are in a browser, a design tool,
a meeting. The panel stays above every app and every Space, so the answer to
“is anything waiting on me?” is always one glance up.
What it shows
Section titled “What it shows”Collapsed, it is a pill sitting flush under the notch: the number of agents and a single status dot for the worst active state. If anything is blocked, the dot tells you without opening anything.
Open it and each agent gets a row:
| Column | Meaning |
|---|---|
| Icon | which agent it is: Claude Code, Codex, Copilot, opencode … |
| Model | the model that session is running |
| Project | the workspace the agent lives in |
| Context | how full its context window is, turning red as it nears compaction |
| Cost | the session’s estimated spend |
| Status | working, blocked, done, or idle |
The footer totals the fleet: how many are running, how many finished, and what the whole set has cost so far.
What it does
Section titled “What it does”Three things, which is deliberately all:
Monitor. The panel is a live mirror of the agents sidebar. States update as they change, with no polling on your part.
Approve. When an agent blocks on a permission prompt or a question, the row turns into a card: what it is asking, and the answers it will accept. Answer it straight from the notch and the agent carries on. This is the feature that earns the app. The gap between “an agent asked” and “you answered” is usually the biggest dead time in a long session.
Jump. Click any row to focus that agent’s pane in bohay. The terminal comes forward with the right workspace, tab and pane already selected.
How it connects
Section titled “How it connects”The app is a client of the same socket the CLI uses. On launch it resolves
bohay’s control socket, sends events.subscribe, and keeps a live model of
every pane from the event stream, seeded by one agent.list snapshot.
That has a few consequences worth knowing:
- No extra configuration. If bohay is running, the app finds it.
- No accessibility permission, no daemon, no private APIs. It is a normal signed app.
- bohay does not need to be running. The app reconnects with backoff and shows a disconnected state until a server appears.
- Everything is local. The socket is a Unix domain socket on your machine; nothing about your agents leaves it.
Because both surfaces read the same event bus, the notch and the sidebar can never disagree: there is one source of truth, and the panel is a view of it.
Install
Section titled “Install”brew install --cask --no-quarantine RizRiyz/bohay/bohay-notchOr download the .dmg from the
releases page.
--no-quarantine is there because the app is not notarized through the App
Store; without it macOS will refuse the first launch. If you would rather not
pass that flag, download the .dmg and approve the app once in
System Settings → Privacy & Security.
Requirements: macOS 15 or newer, Apple silicon.
The app launches at login as an accessory, with no Dock icon and no window in the switcher.
On Macs without a notch
Section titled “On Macs without a notch”The notch is the camera housing, and no app can paint inside it. What the panel actually does is sit flush beneath it, filled black with rounded lower corners so the two read as one shape.
On a Mac with no notch (an Intel machine, or an external display) there is nothing to fuse with, so the same panel renders as a free-standing rounded pill anchored to the top centre of the screen. Same content, same behaviour, just a different anchor.
Limits
Section titled “Limits”Worth stating plainly:
- macOS only. It uses AppKit and SwiftUI, so there is no Linux or Windows equivalent. Everything it surfaces is in the terminal too.
- It is not a second bohay. No panes, no layout, no git. It answers “who needs me?” and gets you to them.
- Cost and context figures come from the agents’ own session files, so they are as complete as what each agent records, the same data Mission Control shows.
See also
Section titled “See also”- Working with Agents: detection, Mission Control, and the sidebar the panel mirrors
- Socket API:
events.subscribeandagent.list, the two calls the app is built on