AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
翻譯準備中
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Your AI coding agents, living in the MacBook notch. A Dynamic Island for Claude Code, Codex and OpenCode.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Your AI coding agents, living in the MacBook notch.
🌐 notchagents.vercel.app · ▶ Watch the launch video · Made by @sakshamships
NotchAgents turns the notch into a Dynamic Island for Claude Code, Codex and other coding agents. See at a glance which agents are running and what they're doing, approve tool calls without switching windows, answer questions, and keep an eye on usage, all from the top of your screen.
| Approve a tool call | Answer a question |
|---|---|
| Codex at work | Nothing running yet |
When you're not hovering, the notch stays small: one orb per running agent and the current turn's timer. A banner drops down when an agent finishes or needs you.
| Agent | How it's detected | What you see |
|---|---|---|
| Claude Code (terminal, VS Code, Cursor, JetBrains) | Claude Code hooks + process scan | Full status, tool activity, approvals, questions, context, limits, cost |
| Claude App (Claude Code sessions in the desktop app) | Hooks + process scan | Status, tool activity, approvals, questions, context, cost (no plan limits: the desktop app has no status line) |
| Codex (CLI, desktop, or hosted by another app) | Codex's session logs + process scan | Status, tool activity, context, limits |
| OpenCode (terminal, or hosted by another app) | Process scan + OpenCode's local database (read-only) | Status, tool activity, model, session cost and tokens |
Only agents that are running appear in the notch and the menu bar.
xcode-select --install), and Python 3.NotchAgents isn't notarized by Apple yet (that needs a paid Apple developer account), so pick whichever of these you're comfortable with. All three install the same app.
curl -fsSL https://raw.githubusercontent.com/sakshamsaini12/NotchAgents/main/install.sh | bash
install.sh is short; read it first if you like. It downloads the DMG from this repo's releases, refuses to install it unless its SHA-256 matches the checksum written in the script, checks the app's code signature, copies it to /Applications and opens it. It needs no password and changes no system settings. Files downloaded with curl aren't quarantined, so macOS doesn't show the "not opened" warning.
Then click the orb in the menu bar → Install Claude Code hooks, and start a new Claude Code session.
NotchAgents-<version>.dmg from Releases. You can compare its SHA-256 (shasum -a 256 NotchAgents-*.dmg) with the one in the release notes.xattr -dr com.apple.quarantine /Applications/NotchAgents.app.) You only need to do this once.git clone https://github.com/sakshamsaini12/notchagents.git
cd notchagents
./build.sh
build.sh does the following:
/Applications/NotchAgents.app (or ~/Applications if that isn't writable), then launches it.~/.notchagents/: notch-hook.sh (forwards Claude Code hook events) and notch-status.sh (forwards the status line, which carries usage data).settings.json of ~/.claude, $CLAUDE_CONFIG_DIR, and any other ~/.claude* config folder that has one:
settings.json.notchagents-backup-<time>.Start a new Claude Code session after installing so it picks up the hooks.
Because you build the app yourself, macOS doesn't quarantine it and Gatekeeper won't block it.
To package a release, ./make_dmg.sh builds dist/NotchAgents-<version>.dmg (debug symbols stripped, ad-hoc signed). The DMG window layout is written by dmgbuild, installed on first run into build/dmgbuild-venv from the hash-pinned tools/dmg-requirements.txt, rather than by scripting Finder, so the image records nothing about the machine that built it.
41 ctx means 41% is used. Near 100%, Claude Code compacts (summarises) the conversation to make room, and the agent may lose detail from earlier in the session, so a high number is a good moment to start a fresh session for a new task.Usage limits and exact cost arrive through Claude Code's status line. If you already have one, the installer leaves it alone, so the 5-hour and weekly meters won't appear. To get both, forward the status-line input to NotchAgents from your own script:
#!/bin/bash
input=$(cat)
printf '%s' "$input" | ~/.notchagents/notch-status.sh
printf '%s' "$input" | /path/to/your-statusline.sh
NotchAgents is local only. There's no account, no analytics, no crash reporting and no update check: the app never connects to the internet. You can check this in the source; the only network code is the local server in HookServer.swift.
127.0.0.1:47823, and requests must carry a random token stored in ~/.notchagents/token (readable only by you). The hook scripts read the token from a file rather than passing it on the command line, so other users on the Mac can't see it in ps.~/.claude*/projects), Codex session logs (~/.codex/sessions, ~/.codex/archived_sessions) and OpenCode's database (~/.local/share/opencode/opencode.db, opened read-only) to show activity and usage. It doesn't send them anywhere.127.0.0.1 and nowhere else.~/.notchagents/ (the hook scripts and the token), the hooks entry in your Claude settings.json files (backed up first, and only when you install the hooks), and its preferences (local.notchagents: the sound switch and which Claude config folders it has seen)../build.sh.# remove the hooks and status line from every Claude config (from a clone: ./build.sh --uninstall-hooks)
curl -fsSL https://raw.githubusercontent.com/sakshamsaini12/NotchAgents/main/hooks/install_hooks.py | python3 - --uninstall
rm -rf /Applications/NotchAgents.app ~/.notchagents
defaults delete local.notchagents # optional: forget preferences
Backups of your settings (settings.json.notchagents-backup-*) stay next to each settings.json. Delete them once you're happy.
The notch shows "Hooks installed. Waiting for the first Claude Code event." Hooks only load when a session starts. Start a new Claude Code session.
An agent isn't detected, or shows the wrong state. These commands show what NotchAgents sees:
APP=/Applications/NotchAgents.app/Contents/MacOS/NotchAgents
$APP --scan # agent processes found right now
$APP --usage # Claude config folders, hook status, today's spend
curl -s -H @"$HOME/.notchagents/token.header" "127.0.0.1:47823/?type=state" # what the app believes
Please include their output when you open an issue.
Codex started by another app (ChatGPT, an editor, a design tool) appears late or disappears. These hosts keep Codex running in the background between tasks. NotchAgents shows it while it's working and for a few minutes afterwards.
Port 47823 is in use.
The island shows a red server error. Quit whatever is using the port (lsof -i :47823) and relaunch NotchAgents.
swift build -c release && .build/release/NotchAgents
Useful flags:
| Flag | What it does |
|---|---|
--render-preview <dir> | Renders every island state with sample data inside a MacBook mockup (JPEGs), to check layout. The README images come from --render-preview docs/images. |
--render-icon <file> | Renders the app icon (used by build.sh). |
--sounds | Plays every sound effect in turn. |
hooks/demo.sh | Plays a fake Claude session through a running app: activity, an approval, a completion and a question. |
Set NOTCHAGENTS_PORT=47901 to run a development copy next to the installed one. Hooks still talk to the installed app on 47823.
The code is plain SwiftUI and AppKit with no dependencies:
| File | Role |
|---|---|
AgentStore.swift | State, hook handling, process scanning, Codex logs |
NotchView.swift | The island |
HookServer.swift | Local HTTP server |
Usage.swift | Claude config folders, pricing, cost ledger |
OpenCode.swift | OpenCode status from its database |
Mockup.swift | MacBook mockup for the README images |
Sound.swift | Sound effects, synthesised in code |
Glyphs.swift | Agent orbs and marks |
MenuBar.swift | Menu bar popover |
Contributions are welcome. Please open an issue first for larger changes.
The code is MIT.
NotchAgents isn't affiliated with or endorsed by Apple, Anthropic or OpenAI.