Skip to content

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.

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.

claude · ~/sudos
Agents
4 Claude Code
AGENTS4
2 running 1 done 1 idle $3.99total
brew install --cask --no-quarantine RizRiyz/bohay/bohay-notch macOS 15+ · Apple silicon · or download the .dmg

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.

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:

ColumnMeaning
Iconwhich agent it is: Claude Code, Codex, Copilot, opencode …
Modelthe model that session is running
Projectthe workspace the agent lives in
Contexthow full its context window is, turning red as it nears compaction
Costthe session’s estimated spend
Statusworking, 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.

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.

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.

Terminal window
brew install --cask --no-quarantine RizRiyz/bohay/bohay-notch

Or 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.

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.

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.
  • Working with Agents: detection, Mission Control, and the sidebar the panel mirrors
  • Socket API: events.subscribe and agent.list, the two calls the app is built on