Install
$ agentstack add mcp-birdythedev-notchpad ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Notchpad
A modular panel in the MacBook notch. You decide what goes in it: a file shelf, system and memory readouts, a keep-awake switch, a pomodoro, your own shell commands, Unity projects, MCP server health — and live Claude Code sessions with their token usage. Enable the modules you want, drop the ones you don't, order them however you like.
macOS 14+ · Apple Silicon · no dependencies
How it works
- Closed, the notch stays black with two small readouts on either side. You pick what
goes there: Claude status, battery, CPU, memory, network speed, clock, temperature, timer, keep-awake, next calendar event, MCP bridge, tokens today.
- Hover it and the panel opens: tabs along the top, the active module below.
- ⌥Space pins the panel open so it stays put when the pointer leaves. ✕ closes it.
- Drag files onto it and the panel splits in two — drop on the left to open that
folder in Claude Code, on the right to park the files on the shelf.
Modules
| Module | What it does | |---|---| | Claude | Live mascot plus every open session, most urgent first. Today's tokens and messages, the current 5-hour block, one-click new session, recent projects | | Usage | Tokens, messages and output for today, a seven-day chart, daily average, and the split by model and by project | | Actions | /code-review, /security-review, /simplify, /init and your own prompts, one click, in the last project or a folder you pick. Also scans ~/.claude/commands, ~/.claude/agents and installed plugins for commands and skills you can pin | | Unity | Hub projects with their editor version, which one the running editor has open, compile errors tailed from Editor.log, whether the Unity MCP bridge answers, Library size, open in Unity or in Claude | | MCP | Every server configured in ~/.claude.json or a project .mcp.json, which projects use it, and a reachability check for the http/sse ones | | Shelf | Park files in the notch, drag them back out anywhere. Double-click opens, ✕ removes | | Awake | Block sleep: off, an hour, indefinitely, or automatically while a Claude session is working. Optionally keep the display on. Lid-closed mode too (see the notes) | | System | CPU per core, memory, disk, live network throughput | | Memory | Memory pressure, swap, the apps using the most RAM (helper processes included) and a polite quit for each | | Battery | Charge ring, charging state, time remaining, health and cycle count | | Timer | Pomodoro and break, with a round counter | | Commands | Your own shell shortcuts, in a terminal window or quietly in the background | | Music | Controls the Music app (asks for Automation permission the first time) | | Calendar | The next 24 hours (asks for calendar access) | | Weather | Temperature, feels-like, high/low and wind for a city you name — open-meteo, no API key |
Modules are switched on, off and reordered in Settings › Modules. Anything switched off disappears from the tab bar.
Customising it
- General — launch at login, open on hover and how long to wait, the ⌥Space shortcut,
what sits either side of the notch, your city, pomodoro lengths, keep-awake behaviour.
- Appearance — accent colour, panel width (420–760), corner radius, opacity,
background blur, mascot eyes.
- Claude — which terminal to use, extra
claudearguments, whether to show usage. - Actions and Commands — add, edit, reorder, choose an icon and a target folder.
Install
./build.sh # builds /Applications/Notchpad.app, icon included
./install.sh # installs the hook, wires up settings.json, launches the app
./uninstall.sh # puts everything back
build.sh signs the app ad-hoc, which is fine when you build it yourself. A downloaded build has to be signed with a Developer ID and notarised or macOS will refuse to open it — release.sh does that end to end and spells out the one-time setup it needs.
install.sh copies the hook into ~/.claude/hooks/, backs up ~/.claude/settings.json and adds the hook entries. Nothing else is touched.
No permission dialogs for the core features: terminals are opened through a throwaway .command file and LaunchServices rather than AppleScript. Only Music and Calendar ask for anything, and only when you enable them.
How the pieces fit
| File | Job | |---|---| | NotchWindow.swift | Borderless NSPanel one level above the menu bar. PassthroughView decides when the window may claim mouse events at all, and handles drag and drop | | NotchView.swift | The shell: closed view with its readouts, tab bar, module body, drop zones. Content is clipped to the notch shape | | Modules.swift | ModuleKind and PeekSlot — the list of modules, their titles and heights | | ModuleViews*.swift | One view per module | | Stores.swift | Shelf, timer, weather, calendar, music, command runner | | Unity.swift | Hub project list, running-editor detection by path, error lines from the tail of Editor.log | | Mcp.swift | MCP server discovery and a short-timeout reachability probe | | Power.swift | IOPMAssertion keep-awake, plus a privileged helper for lid-closed mode that restores the setting itself | | Memory.swift | Pressure, swap and per-app memory including processes the app is responsible for | | Actions.swift | Slash command, skill and agent discovery, and running them | | Sensors.swift | CPU, memory, disk, network and battery via host_processor_info, host_statistics64, getifaddrs and IOPSCopyPowerSourcesInfo | | Mascot.swift, ClaudeMark.swift | The animated mark and a small SVG path parser | | UsageStore.swift | Reads transcripts incrementally and caches per-day, per-model and per-project totals so a restart doesn't re-parse a week of JSONL | | SessionServer.swift | Unix socket at /tmp/notchpad.sock for hook events | | Launcher.swift | Opens a terminal through a temporary .command file; terminal list; login item | | Hotkey.swift | Carbon RegisterEventHotKey, so no Accessibility permission is needed | | Prefs.swift, SettingsView.swift | Every setting, and the settings window | | Support/make-icon.swift | Build-time only: renders AppIcon.icns from the same vector the mascot uses |
Notes
- The hook is fire-and-forget. If the app isn't running the connection just fails and
Claude Code carries on.
- Sessions whose terminal was closed never send
SessionEnd, so their pids are checked
every 45 seconds and dead rows disappear.
- Sensors refresh every 2 seconds; transcripts, projects, weather and calendar every 45.
The heavy work stays off the main thread.
- Sessions are deliberately started with
--dangerously-skip-permissions. There is no
setting to turn that off.
- Lid-closed keep-awake changes a system-wide setting (
pmset disablesleep). The app
never leaves it on by itself: an admin-authorised helper flips it and puts it back when its deadline passes or when /tmp/notchpad-lid-awake disappears. So a crash, a force-quit or deleting the app can't leave the Mac unable to sleep. The Undo button just removes that file.
- Every other keep-awake mode is a power assertion and dies with the process. No password.
- A Unity project's
Libraryfolder is never deleted, only measured and revealed. Deleting
it while the editor is open corrupts the project.
- The menu bar icon carries the session colour: orange thinking, blue running a tool,
green waiting for you, amber waiting for approval.
- Each
./build.shproduces a fresh ad-hoc signature. macOS ties permissions to the
signature, so Automation and Calendar access may be asked for again after a rebuild.
- Not affiliated with, endorsed by, or sponsored by Anthropic. The Claude modules talk to
Claude Code on your machine, and the Claude mark appears inside those modules as a status indicator — path data from Simple Icons (CC0), the mark itself is Anthropic's trademark. Everything else, including the app icon, is original.
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: BirdyTheDev
- Source: BirdyTheDev/notchpad
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.