Back to projects
Experimental

CCrab

A small desktop companion that shows what Claude Code is doing.

A native macOS desktop companion for Claude Code: a pixel crab on a floating panel that reacts to what your agent sessions are doing, plus a menu bar item with your 5-hour and weekly usage bars, every live session, and recent projects. Written in Swift against AppKit and Core Animation. No Electron, no WebView.

Platform
macOS 14+
Source
GitHub repository
Updated
Aug 25, 2026
Stack
Swift · AppKit · Core Animation
~ $ gh repo view jx-grxf/CCrab
CCrab  A small desktop companion that shows what Claude Code is doing.

status   Experimental
stack    Swift · AppKit · Core Animation
platform macOS 14+
repo     github.com/jx-grxf/CCrab

~ $ git clone https://github.com/jx-grxf/CCrab.git && cd CCrab
~ $ 
Project data, read from GitHub at build time

Problem

I wanted to see when a coding agent is busy without keeping its terminal or a browser tab in front.

What I built

Every animation is a Core Animation keyframe over layer contents, so the render server owns the timeline and the process gets no per-frame wakeups. The resting pose is parsed from vector rects into CALayers instead of decoded bitmaps, and animations are removed, not paused, the moment the panel is occluded, the display sleeps, or the screen locks.

Highlights

  • Core Animation handles the animation timeline, without an application timer for every frame.
  • Menu bar with 5-hour and weekly usage bars, reset countdowns, and every live session.
  • State arrives over Claude Code hooks on a loopback endpoint: nothing polls, no extra API calls, no token is read.
  • Connecting backs up your settings.json first and leaves other tools' hook entries alone.

Developer setup

clone
git clone https://github.com/jx-grxf/CCrab.git && cd CCrab