AI Pulse: macOS LED Strip for Coding Agent Status
Get the Tech newsletter
Daily tech — startups, AI labs, chips, the launches that shape the next decade. Free.
- AI Pulse ships as a macOS ambient app that floats a virtual 8-LED strip beside the Dock, showing a single aggregate signal for working, waiting, finished, or broken states with no per-model distinction and Reduce Motion support.
- The app uses no private APIs, no Accessibility/Screen Recording permissions, and no injection — it positions a borderless, nonactivating NSPanel from public screen geometry (NSScreen.frame vs visibleFrame).
- All six MVP milestones are complete, including M5's Claude Code adapter that maps hook events to states (SessionStart→idle, UserPromptSubmit/PreToolUse→working, PermissionRequest→approvalRequired, Stop→completed) while never decoding prompt text, tool inputs, or assistant output.
- The app listens on 127.0.0.1:7455 with loopback-only binding, stores a bearer token in macOS Keychain, and ships with an embedded
aipulseCLI (POST /v1/agents/upsert, /v1/agents/{id}/event, DELETE /v1/agents/{id}) authenticated via a mode 0600 handshake file. - M6 adds an optional dynamic Dock icon (off by default) that aggregates the same AgentStore snapshot as the pill with state priority failure>attention>working>neutral and a badgeLabel count of unacknowledged urgent agents; the pill and Dock icon are independently toggleable and the icon never bounces.
- Releases are not yet notarized, so first launch requires right-click → Open (plus System Settings → Privacy & Security → Open Anyway on macOS 15+); the app requires macOS 14+ and Xcode 16+/Swift 6 toolchain.
- The repository ships
.claude/settings.jsonregisteringaipulse claude-hookfor the relevant hook events so Claude Code sessions in the repo appear in the pill automatically once the app is running.
Why it matters: For developers running multiple AI coding agents, AI Pulse provides a peripheral-vision status indicator that demands zero elevated macOS permissions and never inspects prompts, editor contents, or terminal output — the privacy surface is limited to the agent state metadata the user explicitly publishes via hooks. The loopback-only HTTP service (127.0.0.1:7455) and embedded `aipulse` CLI give third parties a clean integration path while capping request sizes and validating every payload server-side.
Ask SkimNews


