I wanted the little Clawd mascot from Claude Code living on my Mac, so I built him: clawd-buddy, a native Swift/AppKit app with no dependencies.
He wanders along the bottom of your screen, says Claude Code-style things (✻ Flibbertigibbeting…), and you can drag him up into the menu bar to live there. Then he turned into a surprisingly useful little tool.
Repo: https://github.com/xandertaylorx/clawd-buddy (MIT, fan project, not affiliated with Anthropic)
He's drawn from rectangles
There are no image assets. Clawd is a handful of filled rectangles that get redrawn from a Pose struct (eyes, arm raise, which legs are lifted, a bob, a squash). The same function draws the desktop sprite, the 22pt menu bar icon, the timer face, the hats, and even the images in the README.
struct Pose: Hashable {
var eyes: Eyes = .open
var armL = 0, armR = 0
var legs = 0 // 0 flat, 1/2 = alternating diagonal pairs lifted
var bob = 0
var squash = false
var hat: Hat = .none
var timer: Int? = nil // when set, Clawd turns into a timer
}
Because Pose is Hashable, menu bar icons are cached per pose, so animating the status item costs almost nothing.
He turns into a timer
Start a focus session and Clawd becomes an alarm-clock crab: a pixel LCD with a 3x5 digit font, a progress bar that drains along the bottom, and little bells on top. The same face shows in the menu bar with the countdown next to it.
Drag files onto him
Drag a file over Clawd and a tray of drop targets pops up: hold it on a shelf, convert to PNG/JPG, shrink, zip, copy the path, or trash it. The image work is plain ImageIO, and zip shells out to /usr/bin/zip.
Fun technical bits
Perching on windows. Every minute or so he picks a window from CGWindowListCopyWindowInfo, checks its top edge isn't covered by a window in front, jumps onto it in an arc, and rides along if you move it. The coordinate flip between CoreGraphics (top-left origin) and Cocoa (bottom-left) got me more than once.
The notch gotcha. On notch Macs, macOS silently drops menu bar items that don't fit. Your status item can exist and simply have no window. The first version of "dock into the menu bar" happily reported success while he was invisible. Now he checks that his icon actually has a visible window, and if not, hops back out and tells you to make room.
A crash I'm slightly embarrassed by. The speech bubble types out its text. If a bubble appeared partway through a frame, the elapsed time came out slightly negative, and String.prefix(-1) traps in Swift. Clamping fixed it. Crash reports in ~/Library/Logs/DiagnosticReports made it a five-minute fix.
Parsing math safely. For the built-in calculator I wrote a small recursive-descent parser instead of using NSExpression, because NSExpression(format:) raises an Objective-C exception on bad input, which Swift can't catch.
The rest
- A 30-second mini-game, Token Catch (move your mouse, catch coins, dodge bugs)
- Color picker, calculator with unit and currency conversion, password generator (clipboard auto-clears after 45s)
- A watcher that tells you when a Claude Code run finishes, plus a
Clawd --say "..."command for hooks and scripts - Break nudges, reminders, calendar heads-ups, hats for the holidays
Try it
git clone https://github.com/xandertaylorx/clawd-buddy.git
cd clawd-buddy
./build.sh
open build/Clawd.app
Needs macOS 14+ and the Swift toolchain. Feedback and PRs welcome, especially from people with crowded menu bars. Tell me what you'd want him to do next!




Top comments (0)