DEV Community

KrisYing
KrisYing

Posted on

My Claude Code Buddy Moved Into My MacBook's Notch and I Can't Stop Looking at It

I'm literally losing productivity because I keep expanding my MacBook's notch to check on my AI buddy.

Let me explain.

It Started With a Problem

I run 5-8 Claude Code sessions simultaneously. Different projects, different terminals, total chaos. I was Alt-Tabbing like a maniac, missing permission requests, forgetting which session finished.

Then I built CodeIsland and everything changed.

Wait, Your Notch Does WHAT?

Yes. The MacBook notch. That ugly camera cutout everyone complained about. It's now the most useful part of my screen.

Full workspace
This is my actual workflow. 8 Claude Code sessions. Zero Alt-Tab.

See that tiny green dot and pixel cat at the top? That's CodeIsland. It sits in the notch, watching all my Claude sessions. When I hover over it, it expands into a full control panel:

Session list
Every session at a glance. Color-coded terminals. Usage stats. And yes, that's my buddy in the corner.

The Buddy Thing Hit Different

Ok here's where it gets ridiculous. You know Claude Code's /buddy feature? The little ASCII companion that grows with your usage?

Mine is a Legendary Octopus named Kris. PATIENCE stat maxed at 100. Look at this absolute unit:

Buddy card
★★★★★ LEGENDARY. I didn't choose the octopus life.

CodeIsland computes your buddy's stats using the exact same algorithm as Claude Code (Bun.hash + Mulberry32). Same species, same rarity, same stats. It even detects if you've patched your install with any-buddy.

The buddy floats in the bottom-right corner of the panel, doing idle animations. I catch myself just... watching it. This is a problem.

But Actually It's Insanely Useful

Ok let me be serious for a second. Here's what blew my mind:

1. It Knows Which Terminal Tab I'm Looking At

When a Claude session finishes, CodeIsland checks: "Is the user already looking at this session's terminal?" If yes, it doesn't popup. If you're in a different tab, it alerts you.

This works at the workspace level in cmux, session level in iTerm2, and window level in Ghostty. No more "I KNOW, I'M LOOKING AT IT" moments.

2. I Answer Claude's Questions From the Notch

When Claude uses AskUserQuestion, the options appear as buttons right in the notch panel. I click "Option A" and it sends the answer directly to my terminal via cmux send. I don't even switch windows.

3. Usage Stats From the OAuth API

Usage

See that? 5h window at 22%, 7d at 30%. CodeIsland reads your OAuth token from macOS Keychain and calls Anthropic's API directly. Zero config. I always know how much headroom I have.

4. Code Diffs in the Chat View

Chat view
Full conversation history with code diffs, tool calls, and status indicators

Click any session to see the full conversation. Green lines for additions, red for deletions. "Go to Terminal" button at the bottom.

The Setup Takes 30 Seconds

  1. Download from GitHub Releases
  2. Drag to Applications
  3. Run sudo xattr -rd com.apple.quarantine /Applications/Code\ Island.app
  4. Launch. Done.

It auto-installs hooks into your Claude Code config. Zero config needed.

Settings
Compact settings with everything you need

The Stack

For the nerds:

  • Pure Swift + SwiftUI, native macOS
  • Unix socket for real-time hook events
  • Anthropic OAuth API for usage stats
  • AppleScript for terminal detection (cmux/iTerm2/Ghostty/Terminal.app)
  • macOS Keychain for zero-config auth

It's Free. Like, Actually Free.

No subscription. No telemetry. No commercial intentions. Just a passion project by someone who got tired of Alt-Tabbing.

GitHub: github.com/xmqywx/CodeIsland

Works best with cmux (modern terminal multiplexer on Ghostty), but supports iTerm2, Ghostty, Terminal.app, Warp, VS Code, Cursor, and more.

If you try it, let me know what you think. And if you star the repo... my octopus buddy thanks you. 🐙


Yes, this post was written while CodeIsland was monitoring 3 Claude Code sessions in my notch. No sessions were harmed in the making of this article.

Top comments (0)