code-island
macOS app that turns your MacBook's notch into a live dashboard for Claude Code, Codex, etc
macOS app that turns your MacBook's notch into a live dashboard for Claude Code, Codex, etc
macOS app that turns your MacBook's notch into a live dashboard for Claude Code, Codex, etc

Turn your MacBook's notch into a live dashboard for your AI coding agents.
Approve permissions, answer questions, track rate limits, and jump between
terminals — all from the notch. Works with 17 AI coding agents — Claude Code, Codex, Gemini, Cursor, Copilot, and more — out of the box.

⏵⏵ auto mode from the notch without switching apps (Codex keeps a broad bypass)ExitPlanMode) renders the plan as formatted markdown in the notch, not raw JSON; approve into ⏵⏵ auto mode, approve & review edits manually, keep planning, or answer in terminalAskUserQuestion and Codex's request_user_input surfaced inline; click to answer (Claude) or jump to the app (Codex)code + fenced code blocks, tables, bullet/numbered/task lists, and blockquotes~/.claude and every ~/.claude-* profile (CLAUDE_CONFIG_DIR targets); sessions are labeled by profile (e.g. work / personal)Code Island auto-installs hooks for every agent it detects on launch — install one and it just shows up in the notch. Hooks are written idempotently and never clobber existing config: foreign hooks are preserved and the original is backed up to .bak.
| Mascot | Tool | Events | Jump-to | Permission / question UI |
|---|---|---|---|---|
| full | ✅ | ✅ | ||
| full | ✅ | ✅ | ||
| 6 | ✅ | — | ||
| full | ✅ | ✅ | ||
| 5 | ✅ | — | ||
droid) |
9 | ✅ | — | |
| 10 | ✅ | — | ||
| 10 | ✅ | — | ||
| 7 | ✅ | — | ||
| 10 | ✅ | — | ||
| all | ✅ | ✅ | ||
| 7 | ✅ | — | ||
| 5 | ✅ | — | ||
| all | ✅ | ✅ | ||
| all | ✅ | ✅ | ||
| 4 | ✅ | — | ||
| 6 | ✅ | — |
Jump-to works for every agent — there's no per-tool jump config. The bridge tags each session with the host app it detected by walking the process tree, and clicking a card brings you straight there. iTerm2, Terminal.app, Ghostty, JetBrains IDEs, VS Code, Cursor, and Windsurf get tab/window-level precision; any other terminal or app is brought to the front.
Permission / question UI ✅ marks the agents that surface approve/deny (and questions) directly in the notch — Claude, Codex, Qwen, OpenCode, and Pi / Oh My Pi (the last two prompt on risky shell commands). Codex, Hermes, and Oh My Pi also mirror their question prompts in the notch with a jump-to-answer. Gemini, Cursor, Copilot, Kimi, AntiGravity, Hermes, and Qoder expose only blanket "before every tool" hooks — turn those into in-notch approve/deny with the opt-in "Review every action" mode (Settings → General). The rest (Factory, CodeBuddy, Cline, Kiro) handle approvals in-tool; Code Island still tracks their sessions, tools, and completions.
Code Island.app to Applicationsxattr -cr /Applications/Code\ Island.app
SessionStart, Stop, PreToolUse, PermissionRequest, etc.)~/.code-island/bin/ (e.g. code-island-bridge for Claude, code-island-cursor-bridge for Cursor) with JSON on stdin--source tagging), and forwards it to the app via Unix socket at /tmp/code-island.sockPermissionRequest: the socket connection stays open, the app sends a response back, and the bridge writes it to stdout for the agentrequest_user_input (multi-choice questions): the question is mirrored in the notch; clicking activates Codex.app so you can answer thereOpen Settings → Appearance to restyle the notch windows. Switching is instant — no restart.
Themes only restyle the chrome. Your mascots, status colors, and rate-limit warnings stay consistent across all of them — the one exception is Web-Slinger, which puts a mask on Claude's crab and Codex's box (palettes untouched, so status still reads). New installs start on Default.
Code Island.app/
├── Contents/
│ ├── MacOS/Code Island ← Main SwiftUI app (menu bar + notch panel)
│ ├── Helpers/CodeIslandBridge ← CLI bridge: normalizes every provider's hooks (--source flag)
│ └── Info.plist ← LSUIElement=true (no dock icon)
└── ~/.code-island/
├── bin/code-island-<agent>-bridge ← one zsh launcher per agent (claude, codex, gemini, cursor, …)
├── config.json ← strict-approval flags (read by the bridge)
├── cache/rl.json ← Cached rate limits
├── debug.log ← Runtime log
└── sound-packs/ ← Custom sound files
Hooks live in each agent's own config — Code Island writes them idempotently, preserving any existing hooks and backing up the original to .bak. A few examples:
~/.claude/settings.json (Claude Code)~/.codex/hooks.json + [features].hooks = true in ~/.codex/config.toml (Codex)~/.gemini/settings.json, ~/.cursor/hooks.json, ~/.config/opencode/ (plugin), ~/.kimi/config.toml, ~/Documents/Cline/Hooks/, …Tech stack: Swift 5.9+, SwiftUI + AppKit, macOS 14.0+, Swift Package Manager, POSIX sockets, AVAudioEngine for 8-bit sound synthesis.
# Debug build
swift build
# Release build
swift build -c release
# Run debug
.build/debug/CodeIsland
To build the DMG installer (requires create-dmg):
brew install create-dmg
./scripts/build-dmg.sh 1.0.0 # produces build/Code-Island-1.0.0.dmg
pkill -9 CodeIsland; rm -f /tmp/code-island.sock; .build/debug/CodeIsland &defaults delete dev.codeisland.macostail -f ~/.code-island/debug.logecho '{"session_id":"test","hook_event_name":"SessionStart","cwd":"/tmp"}' | .build/debug/CodeIslandBridge--source codex to the bridge invocation aboveSee CLAUDE.md for detailed architecture notes, IPC payload shapes, and provider-specific quirks.
PRs welcome! Code Island already ships 17 agents (see Supported Tools) — here's where help is most useful:
Add another provider. 17 agents ship today; DeepSeek and Amp are the notable holdouts (DeepSeek has no official hookable CLI; Amp needs a dedicated plugin — both deferred to avoid shipping a flaky integration). Adding a new one is mostly data + a mascot:
AIProvider entry (id, accent color, mascot) in Sources/CodeIsland/Session/AIProvider.swiftPixelMascot shape + idle/active palette in Sources/CodeIsland/Notch/Views/PixelMascot.swiftProviderInstaller.Descriptor (config path, format, timeout unit, events) in Sources/CodeIsland/Utilities/ProviderInstaller.swift — or a new Format case if the tool's config is exotic (TOML, JS plugin, bash scripts all have precedents)Sources/CodeIslandBridge/main.swift if the tool's hook vocabulary differs from the canonical setResources/cli-icons/<id>.pngSee CLAUDE.md for the full provider-abstraction notes.
Test & verify the agents. This is the single most useful thing you can do. Each integration is verified against the tool's official hook docs, but I only use Claude Code, Codex, and Qwen day-to-day — those three are battle-tested; the other 14 are verified against docs but only lightly smoke-tested. If you actively use any of them, please put it through its paces (sessions, tool tracking, prompt/reply text, permission/strict-approval flows, jump-to) and open an issue when something's off or could be richer. Real-world reports on the agents I can't run regularly are gold.
Other ideas
If an issue or PR is valuable, we're happy to pick it up or merge it.
Code Island is free and built in my spare time. If it's saved you a few context-switches and you'd like to chip in, it's hugely appreciated (and totally optional) — thank you! ☕
Free & open source under the GNU GPLv3. © 2026 Rifqi Akram.
You're free to use, modify, and redistribute it — with one condition: any distributed fork or derivative must also be open source under GPLv3 (it can't be closed-sourced or shipped proprietary).
Code Island is an independent project and is not affiliated with or endorsed by any of the above.