A Dynamic Island-style command center for managing all your AI coding agents on macOS.
See the code
AI coding session monitor for the macOS menu bar
Website •
Try it •
Install •
Features •
Supported Clients •
Build •
Developers •
Sponsor •
Privacy
English | 简体中文
Watch active coding sessions, answer follow-up questions, and jump back to the right terminal or IDE window.
Official website: erha19.github.io/ping-island
Claude Code · ChatGPT · Codex CLI · Gemini CLI · Antigravity CLI · Hermes Agent · Pi Agent · Oh My Pi · Qwen Code · Kimi CLI · OpenClaw · OpenCode · Cursor · Qoder IDE · Qoder CN IDE · CodeBuddy · GitHub Copilot
Detach the active pet from the notch and keep session status nearby while you work across other windows.
On notch-screen Macs, Ping Island expands from the notch with session context and action controls when an agent needs attention.
brew install --cask ping-island
Ping Island.app into your Applications folder.On first launch, macOS may ask you to confirm the app or grant Accessibility / Apple Events permissions for focus features.
Requires macOS 14+ and an Xcode toolchain that can build the Xcode project and the Swift 6.1 Prototype package tests.
git clone https://github.com/erha19/ping-island.git
cd ping-island
# Debug build
xcodebuild -project PingIsland.xcodeproj -scheme PingIsland -configuration Debug build
# Release build
xcodebuild -project PingIsland.xcodeproj -scheme PingIsland -configuration Release build
To create a locally shareable unsigned package for local testing:
./scripts/package-unsigned.sh
The script re-signs the built app bundle with a consistent ad-hoc signature before creating the .dmg and .zip, which helps embedded frameworks launch more reliably on another machine. The package is still unsigned for distribution and not notarized, so first launch may still require Open from Finder's context menu or manual quarantine removal.
The generated files land in releases/unsigned/ as PingIsland-<version>.dmg and PingIsland-<version>.zip.
The DMG uses the repo-tracked installer artwork at docs/images/ping-island-dmg-installer-background.png by default; set PING_ISLAND_DMG_BACKGROUND_SOURCE if you want to preview a different background locally.
To create signed and notarized release packages in GitHub Actions, configure the release secrets described in docs/sparkle-release.md and run .github/workflows/release-packages.yml against a v* tag or the manual workflow dispatch input. Official Homebrew Cask release notes are documented in docs/homebrew-cask-release.md.
The same workflow also publishes a Linux PingIslandBridge asset that Ping Island can download when bootstrapping Linux SSH hosts.
For the full notarized release flow and the GitHub Releases backed Sparkle appcast setup, see docs/sparkle-release.md.
Ping Island is a macOS menu bar app that expands into a compact session surface when your coding agents need attention. It listens to Claude-style hooks, Codex hooks, Gemini CLI hooks, Antigravity CLI plugin hooks, Hermes Agent plugin hooks, Pi Agent extension hooks, Oh My Pi hooks, Qwen Code hooks, Kimi CLI hooks, OpenClaw internal hooks plus session transcripts, the Codex app-server, OpenCode plugins, and compatible IDE integrations so approvals, input requests, completions, and session summaries show up without babysitting terminal tabs.
If you have seen Vibe Island, Ping Island is positioned as an independent open-source alternative in the same category: a native macOS notch/menu bar surface for monitoring and controlling AI coding sessions.
Ping Island focuses on the moments that actually interrupt coding flow, then keeps them visible and actionable from a native macOS notch surface.
ask questions answerable from the Island.| Client | Ingress | Focus / return path | Island capabilities |
|---|---|---|---|
| Claude Code | Claude-compatible hooks through PingIslandBridge | Terminal.app, iTerm2, Ghostty, tmux, and IDE terminals | Tool approvals, AskUserQuestion replies, compaction alerts, completion popups, auto-approve |
| ChatGPT + Codex CLI | Codex CLI hooks, live codex app-server, rollout parsing fallback | ChatGPT, terminal, tmux, and IDE terminals | Approval/input requests, live thread sync, usage snapshots, remote app-server forwarding |
| Gemini CLI | Gemini CLI hooks in ~/.gemini/settings.json | Compatible terminal hosts | Session lifecycle, tool activity, notifications, pre-compaction events |
| Antigravity CLI | Generated native plugin under ~/.gemini/antigravity-cli/plugins/ping-island/ | Compatible terminal hosts and remote SSH sessions | Model invocation, tool activity, errors, and turn-stop status while preserving Antigravity's native permission prompts |
| Hermes Agent | Official plugin hooks in ~/.hermes/plugins/ping_island/ | Hermes CLI terminal host | User prompts, tool activity, assistant replies, session-end notifications |
| Pi Agent | Official extension under ~/.pi/agent/extensions/ping_island/ | Pi Agent terminal host | Extension event forwarding, client-aware session tracking, terminal-cloud mascot |
| Oh My Pi (OMP) | TypeScript hook at ~/.omp/agent/hooks/pre/ping-island.ts | OMP terminal host | Session and tool activity, tool approvals, ask replies, dedicated orange pixel mascot |
| Qwen Code | Official hooks in ~/.qwen/settings.json | Compatible terminal hosts and remote SSH sessions | Permission prompts, notification popups, stop/session-end handling, remote hook forwarding |
| Kimi CLI | Official [[hooks]] entries in ~/.kimi/config.toml | Compatible terminal hosts | Tool activity, notifications, turn completion, session-end handling |
| Kimi App | Official [[hooks]] entries in the bundled kimi-code kernel config under ~/Library/Application Support/kimi-desktop/ | Kimi desktop app | Chat and agent turns from the desktop app, with automatic repair when Kimi rewrites its kernel config |
| OpenClaw | Managed internal hooks plus local transcript refresh | OpenClaw terminal host | Fast hook status, transcript backfill, message/session state |
| OpenCode | Generated plugin file under ~/.config/opencode/plugins/ | OpenCode app and terminal host | Plugin event forwarding into the shared Island UI |
| Cursor | Claude-compatible hooks plus optional VS Code-compatible focus extension | Cursor project window and active terminal | IDE routing, terminal focus, Claude-family session tracking |
| Qoder IDE / Qoder CN IDE / Qoder CLI / Qoder CN CLI / QoderWork | Managed hook profiles in ~/.qoder/settings.json, ~/.qoder-cn/settings.json, and ~/.qoderwork/settings.json | Qoder IDE and Qoder CN IDE windows, terminal, and supported IDE extension paths | Separate regional IDE/CLI identities, approvals where supported, notify-only handling for desktop IDEs and QoderWork |
| CodeBuddy / WorkBuddy | Managed hook profiles plus optional VS Code-compatible focus extension | App windows, terminal, and supported IDE extension paths | Claude-family session tracking, client-aware jump-back, follow-up visibility |
| GitHub Copilot | Copilot hook protocol | Compatible terminal hosts | Copilot CLI / agent hook event status |
The fastest full-repo regression path is:
./scripts/test.sh
That covers:
swift test --package-path Prototype
xcodebuild -project PingIsland.xcodeproj -scheme PingIsland -configuration Debug CODE_SIGNING_ALLOWED=NO test -only-testing:PingIslandTests
xcodebuild -project PingIsland.xcodeproj -scheme PingIsland -configuration Debug CODE_SIGN_IDENTITY=- test
Useful targeted slices:
swift test --package-path Prototype --filter IslandBridgeE2ETests
xcodebuild -project PingIsland.xcodeproj -scheme PingIsland -configuration Debug CODE_SIGNING_ALLOWED=NO test -only-testing:PingIslandTests
xcodebuild -project PingIsland.xcodeproj -scheme PingIsland -configuration Debug CODE_SIGN_IDENTITY=- test -only-testing:PingIslandUITests
If PingIslandUITests-Runner stays suspended on macOS, run the UI tests from Xcode with a valid local signing identity and check amfid / AppleSystemPolicy logs before treating it as an app regression.
Ping Island currently ships a 4-category settings panel:
Ping Island includes three built-in experience themes under Settings -> Sound -> Experience theme:
| Theme | What it changes | Recommended audio |
|---|---|---|
| PingIsland native | The project's glass surfaces, rounded controls, and original visual language | Original built-in 8-bit mapping plus new semantic moments |
| macOS | Native titlebar and traffic lights, full-height source-list sidebar, outline SF Symbols, system materials, and semantic controls | macOS system sounds |
| Pixel | Silkscreen type, pixel grid surfaces, square controls, and code-rendered pixel icons | AgentIsland game-style 8-bit mapping |
Pixel includes Arcade Neon and Game Boy Olive palettes. They share one component, motion, and sound implementation; changing the palette does not reset your sound selection.
Themes are more than a color preset: the same theme supplies visual tokens, confirmation-action appearance, motion timing, lifecycle sound mappings, and auxiliary cues. In addition to the five configurable notification stages, themes cover launch, new sessions, approvals, waiting reminders, rapid submits, and usage warning/recovery edges.
The screen-attached notch remains canonical black across every theme. Theme selection changes Settings and theme-aware detached surfaces, but never recolors the macOS notch area.
All three themes share the same native Settings window shell, so dragging, traffic lights, resizing and full-screen behavior remain consistent. The PingIsland, macOS and Pixel families then render distinct sidebar rows, icons, surfaces and controls inside that shell. Category selection updates immediately; heavier refresh work is deferred, cancellable and cached.
Choosing a theme applies its recommended sound mode. You can then switch to a local CESP/OpenPeon sound pack; this changes audio only and does not replace the active visual or interaction theme. See the theme architecture and extension guide for the contributor-facing contract.
Ping Island currently supports three sound modes under Settings -> Sound:
Settings -> Sound.Enable sounds.System sounds if you just want a different macOS sound per event.Sound pack if you want fully custom audio files.Sound mode to Sound pack.Import local sound pack.openpeon.json.Sound pack dropdown.Ping Island also auto-discovers packs placed under ~/.openpeon/packs and ~/.claude/hooks/peon-ping/packs.
my-pack/
openpeon.json
session-start.wav
attention.ogg
complete.mp3
error.wav
limit.wav
{
"cesp_version": "1.0",
"name": "my-pack",
"display_name": "My Pack",
"categories": {
"task.acknowledge": {
"sounds": [{ "file": "session-start.wav", "label": "Session Start" }]
},
"input.required": {
"sounds": [{ "file": "attention.ogg", "label": "Attention" }]
},
"task.complete": {
"sounds": [{ "file": "complete.mp3", "label": "Complete" }]
},
"task.error": {
"sounds": [{ "file": "error.wav", "label": "Error" }]
},
"resource.limit": {
"sounds": [{ "file": "limit.wav", "label": "Limit" }]
}
}
}
Processing started checks task.acknowledge, then session.start.Attention required checks input.required.Task completed checks task.complete.Task error checks task.error.Resource limit checks resource.limit.Release builds can also publish a Linux PingIslandBridge artifact alongside the macOS app packages, which Ping Island uses when bootstrapping remote SSH hosts that are not running macOS.
Sound packs can use .wav, .mp3, or .ogg files. If a selected pack does not provide a matching category for an event, Ping Island falls back to the macOS system sound selected for that event.
Claude / Codex / Gemini CLI / Antigravity CLI / Hermes Agent / Pi Agent / Oh My Pi (OMP) / Qwen Code / Kimi CLI / OpenCode / Cursor / Qoder IDE / Qoder CN IDE / CodeBuddy / WorkBuddy / Copilot / ...
-> hook or app-server event
-> Ping Island monitor + normalization layer
-> SessionStore
-> SessionMonitor / NotchViewModel
-> notch, list, hover preview, completion popup
Implementation details worth knowing:
PingIslandBridge launcher.codex app-server websocket monitor.~/.gemini/settings.json; tool matchers use Gemini's regex-based hook matcher syntax.~/.gemini/antigravity-cli/plugins/ping-island/; Ping Island returns ask from its observational PreToolUse hook so Antigravity's own permission engine remains authoritative.~/.pi/agent/extensions/ping_island/ and forwards events through the Claude-compatible bridge with Pi-specific client metadata.~/.omp/agent/hooks/pre/ping-island.ts and forwards events with its own OMP client identity. Built-in ask questions are routed to Island first, falling back to OMP's native question UI if the bridge is unavailable or the connection closes without an answer.~/.qwen/settings.json; the bridge follows the official event names and uses Stop / SessionEnd / Notification messages to surface popup-ready summaries in Island.~/.kimi/config.toml; Ping Island preserves unrelated TOML content and maps Kimi Stop to turn completion while SessionEnd closes the session.~/.config/opencode/plugins/ and enabled from the documented global config at ~/.config/opencode/opencode.json; legacy config.json entries are still recognized for cleanup.PingIslandBridge, rewrite remote Claude-compatible hooks to target that bridge, and forward remote events plus Codex usage snapshots back into the local Ping Island UI.Right-click the floating pet to open Settings → General → Appearance. Choose Follow System (the default), Light, or Dark. The choice is saved and applies immediately to Settings, detached panels, and the task count (black in light mode, white in dark mode). System mode follows macOS appearance changes automatically. The screen-attached notch stays black.
Appearance is independent of Sound → Experience theme (PingIsland native, macOS, or Pixel): changing appearance does not reset your theme, Pixel palette, or sounds, and selecting a theme does not reset appearance.
Ping Island grows with the people who build it. From client integrations and interaction design to bug fixes and documentation, every contribution makes the island a little better. Thank you to everyone who shares code, tests a release, or brings a fresh idea. ❤️
Explore their contributions and give them a follow. Want to help shape Ping Island? Share an idea or report a bug in Issues, or contribute a Pull Request.
Ping Island follows the lineage of notch-first agent monitors such as claude-island, and adapts that idea into a broader multi-client session surface with hooks, app-server sync, and IDE routing.
If Ping Island helps you stay focused while your agents work, consider supporting its ongoing development and maintenance. Thank you for helping this little island grow. ❤️
You can also scan a QR code with Alipay or WeChat Pay:
| Alipay | WeChat Pay |
|---|---|
Apache 2.0 - see LICENSE.md.
1,105 followers · starred May 2026
277 followers · starred Jun 2026
238 followers · starred Apr 2026
252 followers · starred Jun 2026
A Dynamic Island-style command center for managing all your AI coding agents on macOS.
See the code
AI coding session monitor for the macOS menu bar
Website •
Try it •
Install •
Features •
Supported Clients •
Build •
Developers •
Sponsor •
Privacy
English | 简体中文
Watch active coding sessions, answer follow-up questions, and jump back to the right terminal or IDE window.
Official website: erha19.github.io/ping-island
Claude Code · ChatGPT · Codex CLI · Gemini CLI · Antigravity CLI · Hermes Agent · Pi Agent · Oh My Pi · Qwen Code · Kimi CLI · OpenClaw · OpenCode · Cursor · Qoder IDE · Qoder CN IDE · CodeBuddy · GitHub Copilot
Detach the active pet from the notch and keep session status nearby while you work across other windows.
On notch-screen Macs, Ping Island expands from the notch with session context and action controls when an agent needs attention.
brew install --cask ping-island
Ping Island.app into your Applications folder.On first launch, macOS may ask you to confirm the app or grant Accessibility / Apple Events permissions for focus features.
Requires macOS 14+ and an Xcode toolchain that can build the Xcode project and the Swift 6.1 Prototype package tests.
git clone https://github.com/erha19/ping-island.git
cd ping-island
# Debug build
xcodebuild -project PingIsland.xcodeproj -scheme PingIsland -configuration Debug build
# Release build
xcodebuild -project PingIsland.xcodeproj -scheme PingIsland -configuration Release build
To create a locally shareable unsigned package for local testing:
./scripts/package-unsigned.sh
The script re-signs the built app bundle with a consistent ad-hoc signature before creating the .dmg and .zip, which helps embedded frameworks launch more reliably on another machine. The package is still unsigned for distribution and not notarized, so first launch may still require Open from Finder's context menu or manual quarantine removal.
The generated files land in releases/unsigned/ as PingIsland-<version>.dmg and PingIsland-<version>.zip.
The DMG uses the repo-tracked installer artwork at docs/images/ping-island-dmg-installer-background.png by default; set PING_ISLAND_DMG_BACKGROUND_SOURCE if you want to preview a different background locally.
To create signed and notarized release packages in GitHub Actions, configure the release secrets described in docs/sparkle-release.md and run .github/workflows/release-packages.yml against a v* tag or the manual workflow dispatch input. Official Homebrew Cask release notes are documented in docs/homebrew-cask-release.md.
The same workflow also publishes a Linux PingIslandBridge asset that Ping Island can download when bootstrapping Linux SSH hosts.
For the full notarized release flow and the GitHub Releases backed Sparkle appcast setup, see docs/sparkle-release.md.
Ping Island is a macOS menu bar app that expands into a compact session surface when your coding agents need attention. It listens to Claude-style hooks, Codex hooks, Gemini CLI hooks, Antigravity CLI plugin hooks, Hermes Agent plugin hooks, Pi Agent extension hooks, Oh My Pi hooks, Qwen Code hooks, Kimi CLI hooks, OpenClaw internal hooks plus session transcripts, the Codex app-server, OpenCode plugins, and compatible IDE integrations so approvals, input requests, completions, and session summaries show up without babysitting terminal tabs.
If you have seen Vibe Island, Ping Island is positioned as an independent open-source alternative in the same category: a native macOS notch/menu bar surface for monitoring and controlling AI coding sessions.
Ping Island focuses on the moments that actually interrupt coding flow, then keeps them visible and actionable from a native macOS notch surface.
ask questions answerable from the Island.| Client | Ingress | Focus / return path | Island capabilities |
|---|---|---|---|
| Claude Code | Claude-compatible hooks through PingIslandBridge | Terminal.app, iTerm2, Ghostty, tmux, and IDE terminals | Tool approvals, AskUserQuestion replies, compaction alerts, completion popups, auto-approve |
| ChatGPT + Codex CLI | Codex CLI hooks, live codex app-server, rollout parsing fallback | ChatGPT, terminal, tmux, and IDE terminals | Approval/input requests, live thread sync, usage snapshots, remote app-server forwarding |
| Gemini CLI | Gemini CLI hooks in ~/.gemini/settings.json | Compatible terminal hosts | Session lifecycle, tool activity, notifications, pre-compaction events |
| Antigravity CLI | Generated native plugin under ~/.gemini/antigravity-cli/plugins/ping-island/ | Compatible terminal hosts and remote SSH sessions | Model invocation, tool activity, errors, and turn-stop status while preserving Antigravity's native permission prompts |
| Hermes Agent | Official plugin hooks in ~/.hermes/plugins/ping_island/ | Hermes CLI terminal host | User prompts, tool activity, assistant replies, session-end notifications |
| Pi Agent | Official extension under ~/.pi/agent/extensions/ping_island/ | Pi Agent terminal host | Extension event forwarding, client-aware session tracking, terminal-cloud mascot |
| Oh My Pi (OMP) | TypeScript hook at ~/.omp/agent/hooks/pre/ping-island.ts | OMP terminal host | Session and tool activity, tool approvals, ask replies, dedicated orange pixel mascot |
| Qwen Code | Official hooks in ~/.qwen/settings.json | Compatible terminal hosts and remote SSH sessions | Permission prompts, notification popups, stop/session-end handling, remote hook forwarding |
| Kimi CLI | Official [[hooks]] entries in ~/.kimi/config.toml | Compatible terminal hosts | Tool activity, notifications, turn completion, session-end handling |
| Kimi App | Official [[hooks]] entries in the bundled kimi-code kernel config under ~/Library/Application Support/kimi-desktop/ | Kimi desktop app | Chat and agent turns from the desktop app, with automatic repair when Kimi rewrites its kernel config |
| OpenClaw | Managed internal hooks plus local transcript refresh | OpenClaw terminal host | Fast hook status, transcript backfill, message/session state |
| OpenCode | Generated plugin file under ~/.config/opencode/plugins/ | OpenCode app and terminal host | Plugin event forwarding into the shared Island UI |
| Cursor | Claude-compatible hooks plus optional VS Code-compatible focus extension | Cursor project window and active terminal | IDE routing, terminal focus, Claude-family session tracking |
| Qoder IDE / Qoder CN IDE / Qoder CLI / Qoder CN CLI / QoderWork | Managed hook profiles in ~/.qoder/settings.json, ~/.qoder-cn/settings.json, and ~/.qoderwork/settings.json | Qoder IDE and Qoder CN IDE windows, terminal, and supported IDE extension paths | Separate regional IDE/CLI identities, approvals where supported, notify-only handling for desktop IDEs and QoderWork |
| CodeBuddy / WorkBuddy | Managed hook profiles plus optional VS Code-compatible focus extension | App windows, terminal, and supported IDE extension paths | Claude-family session tracking, client-aware jump-back, follow-up visibility |
| GitHub Copilot | Copilot hook protocol | Compatible terminal hosts | Copilot CLI / agent hook event status |
The fastest full-repo regression path is:
./scripts/test.sh
That covers:
swift test --package-path Prototype
xcodebuild -project PingIsland.xcodeproj -scheme PingIsland -configuration Debug CODE_SIGNING_ALLOWED=NO test -only-testing:PingIslandTests
xcodebuild -project PingIsland.xcodeproj -scheme PingIsland -configuration Debug CODE_SIGN_IDENTITY=- test
Useful targeted slices:
swift test --package-path Prototype --filter IslandBridgeE2ETests
xcodebuild -project PingIsland.xcodeproj -scheme PingIsland -configuration Debug CODE_SIGNING_ALLOWED=NO test -only-testing:PingIslandTests
xcodebuild -project PingIsland.xcodeproj -scheme PingIsland -configuration Debug CODE_SIGN_IDENTITY=- test -only-testing:PingIslandUITests
If PingIslandUITests-Runner stays suspended on macOS, run the UI tests from Xcode with a valid local signing identity and check amfid / AppleSystemPolicy logs before treating it as an app regression.
Ping Island currently ships a 4-category settings panel:
Ping Island includes three built-in experience themes under Settings -> Sound -> Experience theme:
| Theme | What it changes | Recommended audio |
|---|---|---|
| PingIsland native | The project's glass surfaces, rounded controls, and original visual language | Original built-in 8-bit mapping plus new semantic moments |
| macOS | Native titlebar and traffic lights, full-height source-list sidebar, outline SF Symbols, system materials, and semantic controls | macOS system sounds |
| Pixel | Silkscreen type, pixel grid surfaces, square controls, and code-rendered pixel icons | AgentIsland game-style 8-bit mapping |
Pixel includes Arcade Neon and Game Boy Olive palettes. They share one component, motion, and sound implementation; changing the palette does not reset your sound selection.
Themes are more than a color preset: the same theme supplies visual tokens, confirmation-action appearance, motion timing, lifecycle sound mappings, and auxiliary cues. In addition to the five configurable notification stages, themes cover launch, new sessions, approvals, waiting reminders, rapid submits, and usage warning/recovery edges.
The screen-attached notch remains canonical black across every theme. Theme selection changes Settings and theme-aware detached surfaces, but never recolors the macOS notch area.
All three themes share the same native Settings window shell, so dragging, traffic lights, resizing and full-screen behavior remain consistent. The PingIsland, macOS and Pixel families then render distinct sidebar rows, icons, surfaces and controls inside that shell. Category selection updates immediately; heavier refresh work is deferred, cancellable and cached.
Choosing a theme applies its recommended sound mode. You can then switch to a local CESP/OpenPeon sound pack; this changes audio only and does not replace the active visual or interaction theme. See the theme architecture and extension guide for the contributor-facing contract.
Ping Island currently supports three sound modes under Settings -> Sound:
Settings -> Sound.Enable sounds.System sounds if you just want a different macOS sound per event.Sound pack if you want fully custom audio files.Sound mode to Sound pack.Import local sound pack.openpeon.json.Sound pack dropdown.Ping Island also auto-discovers packs placed under ~/.openpeon/packs and ~/.claude/hooks/peon-ping/packs.
my-pack/
openpeon.json
session-start.wav
attention.ogg
complete.mp3
error.wav
limit.wav
{
"cesp_version": "1.0",
"name": "my-pack",
"display_name": "My Pack",
"categories": {
"task.acknowledge": {
"sounds": [{ "file": "session-start.wav", "label": "Session Start" }]
},
"input.required": {
"sounds": [{ "file": "attention.ogg", "label": "Attention" }]
},
"task.complete": {
"sounds": [{ "file": "complete.mp3", "label": "Complete" }]
},
"task.error": {
"sounds": [{ "file": "error.wav", "label": "Error" }]
},
"resource.limit": {
"sounds": [{ "file": "limit.wav", "label": "Limit" }]
}
}
}
Processing started checks task.acknowledge, then session.start.Attention required checks input.required.Task completed checks task.complete.Task error checks task.error.Resource limit checks resource.limit.Release builds can also publish a Linux PingIslandBridge artifact alongside the macOS app packages, which Ping Island uses when bootstrapping remote SSH hosts that are not running macOS.
Sound packs can use .wav, .mp3, or .ogg files. If a selected pack does not provide a matching category for an event, Ping Island falls back to the macOS system sound selected for that event.
Claude / Codex / Gemini CLI / Antigravity CLI / Hermes Agent / Pi Agent / Oh My Pi (OMP) / Qwen Code / Kimi CLI / OpenCode / Cursor / Qoder IDE / Qoder CN IDE / CodeBuddy / WorkBuddy / Copilot / ...
-> hook or app-server event
-> Ping Island monitor + normalization layer
-> SessionStore
-> SessionMonitor / NotchViewModel
-> notch, list, hover preview, completion popup
Implementation details worth knowing:
PingIslandBridge launcher.codex app-server websocket monitor.~/.gemini/settings.json; tool matchers use Gemini's regex-based hook matcher syntax.~/.gemini/antigravity-cli/plugins/ping-island/; Ping Island returns ask from its observational PreToolUse hook so Antigravity's own permission engine remains authoritative.~/.pi/agent/extensions/ping_island/ and forwards events through the Claude-compatible bridge with Pi-specific client metadata.~/.omp/agent/hooks/pre/ping-island.ts and forwards events with its own OMP client identity. Built-in ask questions are routed to Island first, falling back to OMP's native question UI if the bridge is unavailable or the connection closes without an answer.~/.qwen/settings.json; the bridge follows the official event names and uses Stop / SessionEnd / Notification messages to surface popup-ready summaries in Island.~/.kimi/config.toml; Ping Island preserves unrelated TOML content and maps Kimi Stop to turn completion while SessionEnd closes the session.~/.config/opencode/plugins/ and enabled from the documented global config at ~/.config/opencode/opencode.json; legacy config.json entries are still recognized for cleanup.PingIslandBridge, rewrite remote Claude-compatible hooks to target that bridge, and forward remote events plus Codex usage snapshots back into the local Ping Island UI.Right-click the floating pet to open Settings → General → Appearance. Choose Follow System (the default), Light, or Dark. The choice is saved and applies immediately to Settings, detached panels, and the task count (black in light mode, white in dark mode). System mode follows macOS appearance changes automatically. The screen-attached notch stays black.
Appearance is independent of Sound → Experience theme (PingIsland native, macOS, or Pixel): changing appearance does not reset your theme, Pixel palette, or sounds, and selecting a theme does not reset appearance.
Ping Island grows with the people who build it. From client integrations and interaction design to bug fixes and documentation, every contribution makes the island a little better. Thank you to everyone who shares code, tests a release, or brings a fresh idea. ❤️
Explore their contributions and give them a follow. Want to help shape Ping Island? Share an idea or report a bug in Issues, or contribute a Pull Request.
Ping Island follows the lineage of notch-first agent monitors such as claude-island, and adapts that idea into a broader multi-client session surface with hooks, app-server sync, and IDE routing.
If Ping Island helps you stay focused while your agents work, consider supporting its ongoing development and maintenance. Thank you for helping this little island grow. ❤️
You can also scan a QR code with Alipay or WeChat Pay:
| Alipay | WeChat Pay |
|---|---|
Apache 2.0 - see LICENSE.md.
1,105 followers · starred May 2026
277 followers · starred Jun 2026
238 followers · starred Apr 2026
252 followers · starred Jun 2026