GitHub - sk-ruban/notchi: notch app for claude code & codex

3 min read Original article ↗

A macOS notch companion that reacts to Claude Code and Codex activity in real-time.

notchi-demo.mp4

What it does

  • Reacts to Claude Code and Codex events in real-time (thinking, working, permission requests, compaction, errors, completions)
  • Analyzes prompt sentiment via Anthropic or OpenAI APIs to show emotions (happy, elated, sad, neutral, sob)
  • Click to expand and see session time and usage quota
  • Supports multiple concurrent sessions, each with its own mascot from the Claude or Codex sprite family
  • Sound effects for events with support for importable custom sounds (optional, auto-muted when terminal is focused)
  • Auto-updates via Sparkle

Requirements

Install

  1. Download Notchi-x.x.x.dmg from the latest GitHub Release

  2. Open the DMG and drag Notchi to Applications

  3. Launch Notchi — it auto-installs Claude Code and Codex hooks on first launch (whichever are present)

  4. If you use Claude Code, a macOS keychain popup will appear asking to access its cached OAuth token (used for API usage stats). Click Always Allow so it won't prompt again on future launches

    Keychain access popup
  5. (Optional) Click the notch to expand → open Settings → paste your Anthropic or OpenAI API key. This enables sentiment analysis of your prompts so the mascot reacts emotionally

    Emotion analysis settings
  6. Start using Claude Code or Codex and watch Notchi react

How it works

Claude Code / Codex --> Hooks (shell scripts) --> Unix Socket --> Event Parser --> State Machine --> Animated Sprites

Notchi registers shell script hooks with Claude Code and Codex on launch. When either agent emits events (tool use, thinking, prompts, permission requests, compaction, session start/end), the hook script sends JSON payloads to a Unix socket. The app parses these events, runs them through a state machine that maps to sprite animations (idle, working, sleeping, compacting, waiting), and uses Anthropic or OpenAI to analyze user prompt sentiment for emotional reactions.

Each session gets its own sprite on the grass island, drawn from the Claude or Codex sprite family depending on which agent it came from. Clicking expands the notch panel to show a live activity feed, session info, and Claude/Codex usage stats.

Contributing

If you have any bugs, ideas, or would like to contribute through pull requests, please check out Contributing to Notchi.

Community Ports

Credits

License

GPL-3.0-only. See LICENSE.