Model or dataset
farouqaldori/vibe-notch avatar
farouqaldori/vibe-notch

vibe-notch: Claude Code approvals in the MacBook notch

Claude Code notifications without the context switch. A minimal, always-present session manager for macOS.

2,515 stars356 forksSwiftApache-2.0

At a glance

What is it?
A Swift menu bar app that reads Claude Code hook events and renders session state in the area around the camera notch, including approve and deny buttons for tool permissions.
Who is it for?
vibe-notch is worth installing if you run Claude Code on an Apple laptop and lose time to permission prompts and status you can only see in another window. It is the wrong tool if you need session recording, cost tracking or a server-side view of agent activity, because none of that is in the README or the release notes.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 170 days ago.
What is it written in?
Mainly Swift, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 7, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A menu bar app that renders agent state around the camera

The pitch is narrow on purpose. vibe-notch is a Swift menu bar app for macOS 15.6 or newer that watches Claude Code CLI sessions and draws their state in the area around the camera notch, the way Dynamic Island draws on an iPhone. When a session starts, finishes, or waits for you, the notch animates. When Claude needs to run a tool, the overlay expands and offers approve and deny buttons, so you stay in whatever window you were using and never tab back to the terminal to answer a prompt.

That is most of the product. There is no dashboard and no separate workspace to manage. The README calls it a minimal, always-present session manager, and the feature list matches: Notch UI, Live Session Monitoring, Permission Approvals, Chat History and Auto-Setup. Chat history is the one item that reaches past the overlay, since a conversation view with markdown rendering is what you get when you open a session from the notch.

The project's history is visible in the names. The README heading still reads Vibe Notch (previously Claude Island), the Xcode scheme in the build command is ClaudeIsland, and the release titles moved from Claude Island v1.3 to Vibe Notch v1.3.2 in April 2026. The repository is Apache 2.0 licensed, the default branch is main, and the last push was on 2026-04-20, the same day v1.3.2 was published.

Building from source with a single xcodebuild command

Two install paths are documented. The first is a disk image from the releases page, and the v1.3.2 notes give the whole sequence: download `VibeNotch-1.3.2.dmg`, open the DMG, drag Vibe Notch into Applications, launch it from there, and let it check for updates afterwards.

The second path is a local build, and it is one command, because the Xcode scheme is checked into the repository:

bash
xcodebuild -scheme ClaudeIsland -configuration Release build

There is nothing else to install for the build itself. That does make Xcode the real dependency, which is worth weighing if you were expecting a command line release. The repository tree is short: `.gitignore`, `ClaudeIsland.xcodeproj/`, `ClaudeIsland/`, `LICENSE.md`, `README.md` and `scripts/`. So the interesting question is not how the app compiles but what sits inside the single `ClaudeIsland/` directory.

Auto-setup is the other thing to understand before you install. The README states that hooks install automatically on first launch, so the app writes into the Claude Code configuration directory itself rather than asking you to copy a script anywhere. Release v1.3 added a dynamic config directory feature on top of that: the app auto-detects `CLAUDE_CONFIG_DIR`, `~/.config/claude/` or `~/.claude/`, and offers a picker in settings. The same release notes add that the chat view now works when Claude Code runs with a custom config directory.

Hook files under ~/.claude/hooks and a Unix socket

The mechanism is a hook script plus a socket. vibe-notch installs hooks into `~/.claude/hooks/` that communicate session state over a Unix socket, the app listens on that socket, and each incoming event updates the overlay. Nothing in the README spells out the payload shape of those hooks or the socket protocol itself, so reading `ClaudeIsland/` is the only way to know what travels between the two.

The socket is the interesting part, because v1.3 changed how it is created. The release notes record that `/tmp/claude-island.sock` was previously world writable at `0o777`, which meant any process on the machine could forge hook events and drive the overlay. v1.3 tightened it to owner only `0o600`, credited to issue #78 from contributor @hobostay. An app carrying permission prompts deserves that fix, and it landing in a release rather than a quiet patch is a reasonable signal about how reports get handled.

Hook registration turned out to be sensitive to which Claude Code version is installed, which is the kind of coupling you only learn about from release notes. v1.3 added three hook events, `PermissionDenied`, `PostCompact` and `StopFailure`. Claude Code builds that predate those events rejected the resulting `settings.json`, so hook registration failed outright instead of degrading. v1.3.1 fixed it by detecting the installed Claude Code version and registering only the hooks that version understands, and by stripping invalid Claude Island entries left over from the earlier install. That fix also means a copy of `settings.json` from a newer Claude Code is not portable to an older install, which is worth knowing before you debug a hook problem.

Approving tool runs without returning to the terminal

The approve and deny buttons are the reason the app exists, so it is worth being exact about what they do. The README says the notch expands with approve or deny buttons when Claude needs permission to run a tool, with no need to switch to the terminal. Nothing in the README describes an allowlist, a timeout policy, or what happens when a session ends while a prompt is still pending, and the release notes do not fill those gaps. If your agents write files or run commands, the security posture of the CLI underneath is still the security posture of this app.

Several v1.3 fixes point at one underlying problem, which is state that should be stable and was not. Message IDs are now stable across app launches, which removes chat flickering. Empty assistant messages and thinking blocks no longer render as orphan dots. The spinner and the checkmark no longer get clipped by the notch curve, and the notch no longer bounces and retracts several times when the machine wakes from sleep. MCP tool arguments now display `"true"` and `"false"` for booleans where they used to show `"1"` and `"0"`, a small detail that tells you the overlay renders whatever JSON a tool call carries rather than a fixed set of shapes.

v1.3.1 fixed two bugs in the same area. Clicking a different session while a chat was open used to show the previous session's messages, so the chat view is now recreated per session. And sessions registered through hooks, without a full JSONL parse, were being marked as loaded, so opening one skipped the conversation entirely; the app now tracks JSONL parsed sessions separately and loads full history on first open.

Two Mixpanel events and a 320 KB patch release

The README is explicit about telemetry. vibe-notch uses Mixpanel and collects two anonymous events: App Launched, carrying the app version, build number and macOS version, and Session Started, fired when a new Claude Code session is detected. It states that no personal data or conversation content is collected. That is a narrow claim, and an unusual one to find written plainly in a menu bar utility, so it is worth checking against your own policy rather than taking it on faith.

Requirements are just as short: macOS 15.6 or newer, and the Claude Code CLI. That pair defines the audience. This is not a cross platform tool, it is not aimed at people running agents on a server, and it does not monitor anything except Claude Code sessions on an Apple laptop. The 320 KB delta patch from v1.3 mentioned in the v1.3.1 notes says something else useful about distribution: updates come through Sparkle, users on v1.1, v1.2 and v1.3 update themselves, and the download is small enough that shipping a patch release costs almost nothing.

The honest limit of the project is that it is a presentation layer. There is no session recording, no diff view, no cost tracking and no remote interface in either the README or the release notes. It shows what Claude Code is doing and stays out of the way.

Where the README stops and the release notes take over

The README is short, close to one screen, and it does not pretend otherwise. Requirements, one build command, a feature list, a paragraph on hooks and the socket, an analytics disclosure. Everything beyond that, including the hook payload shape and the socket protocol, lives in the source under `ClaudeIsland/`.

The release notes are where the engineering detail sits. Three releases in eight days, from 2026-04-12 to 2026-04-20, covering the socket permission fix, hook version compatibility, session switching and chat history loading. The README describes that as a cadence restarting after a four month break following v1.2 in December 2025, and the notes credit individual contributors per fix. For a project this size that is a readable substitute for a changelog policy.

On comparison: tools that surface agent activity either hook into the CLI the way this one does, or they wrap the terminal emulator. Wrapping the terminal gives you full scrollback and any CLI at all, at the cost of another window. vibe-notch takes the hook route, so it sees events rather than text, renders a fixed set of states, and depends on Claude Code keeping its hook interface stable. The v1.3.1 release is that dependency coming due.

The README also points at the contribution flow rather than leaving it implicit, saying open pull requests and issues are being reviewed as the backlog from v1.3 is worked through. With 54 open issues against that pace, expect the issue tracker to be the faster route to an answer than the README.

Editorial conclusion

vibe-notch is worth installing if you run Claude Code on an Apple laptop and lose time to permission prompts and status you can only see in another window. It is the wrong tool if you need session recording, cost tracking or a server-side view of agent activity, because none of that is in the README or the release notes. Install v1.3.2 or later, start a Claude Code session and confirm settings.json is accepted, then check the mode on /tmp/claude-island.sock if the forge path that v1.3 closed matters to you.

Frequently asked questions

Does vibe-notch need Claude Code installed to work?

Yes. The README lists the Claude Code CLI under requirements, alongside macOS 15.6 or newer, and describes the app working by installing hooks into the Claude Code hooks directory. Claude Code is what generates the session events the notch renders.

What data does vibe-notch collect about Claude Code sessions?

The README lists two Mixpanel events: App Launched, with app version, build number and macOS version, and Session Started, when a new session is detected. It states that no personal data or conversation content is collected.

Where does vibe-notch put its hooks and its socket?

Hooks go into `~/.claude/hooks/` and session state travels over a Unix socket at `/tmp/claude-island.sock`. Release v1.3 changed that socket from world writable `0o777` to owner only `0o600`, so other processes can no longer forge hook events.

How do I build vibe-notch from source?

With Xcode and the checked in scheme: the README gives `xcodebuild -scheme ClaudeIsland -configuration Release build`. The scheme name is still ClaudeIsland even though the app is now called Vibe Notch.

Official sources

  1. farouqaldori/vibe-notch on GitHub
  2. Issues
  3. License: Apache-2.0
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/farouqaldori-vibe-notch.svg)](https://hysenlabs.com/projects/farouqaldori-vibe-notch)