Buddy
A small companion for Claude Code that lives in your MacBook notch. It shows what each Claude Code session is doing, and it opens when a session needs you.
Version 0.2.1. A ZIP file from the latest GitHub release. Open it and move Buddy to Applications. The app is notarized (checked by Apple).
Needs a Mac with Apple silicon, macOS 14 or later, and Claude Code. MIT license. Made by Purplelink LLC.
What it does
- Working. A little character sits beside the notch and glances around while Claude works. A blue dot, with a count, shows how many sessions are busy.
- Needs you. When a session asks for permission, asks a question, or has a plan for you to review, Buddy hops, plays a sound, and opens for 20 seconds. After that an orange badge stays until you answer.
- Finished. Buddy smiles, plays a chime, and says how long the turn took, such as "Finished in 3m 12s". A green check stays until you hover over the notch.
- Jump to it. Click a session to open that exact chat in the Claude app, that exact Terminal or iTerm2 tab, or that project's VS Code or Cursor window. Click or swipe a row to clear it.
- Usage limits. When a limit pauses your chats, Buddy counts down to the reset and lists the paused chats, including ones paused before Buddy was running. Continue now types "continue" into each of them, and Auto does it for you a few minutes after the reset.
Buddy hides completely when nothing is happening. It has no Dock icon, no account, and no network access.
What Buddy can access
Buddy asks for more than most small apps, so here is all of it.
- Your Claude Code events. Claude Code runs
buddy-hookat each step of a session: a prompt, a tool call, a question, a finish. The hook writes the event to a folder that exists only while Buddy is running. It adds about 4 to 5 ms per event on an M-series Mac. When Buddy is closed, the hook does nothing. - The ends of your session transcripts. Buddy reads the last 64 KB of a transcript in two cases: to notice that you pressed Esc, since Claude Code sends no event for that, and to find chats a usage limit paused. Buddy never sends them anywhere.
- The Claude app's chat list. Buddy reads the first 16 KB of each chat file in
~/Library/Application Support/Claude. It uses them to show chat titles instead of folder names and to find paused chats. - Accessibility, if you allow it. Buddy uses it only to type "continue" into paused Claude app chats. It waits until the screen is unlocked, and for Auto until you stop typing, then puts you back in the app you were using.
- Automation, if you allow it. macOS asks once before Buddy brings a Terminal or iTerm2 tab forward or sends "continue" to it.
Buddy makes no network connections. Everything stays on your Mac.
Requirements and setup
- A Mac with Apple silicon.
- macOS 14 or later.
- Claude Code, either the
claudecommand or the Code tab of the Claude app.
Open Buddy and click Connect in the banner it shows in the notch. Buddy adds its hook to ~/.claude/settings.json, keeps a backup next to it, and copies a small program to ~/.claude/hooks/buddy-hook. Sessions that start after you connect appear in Buddy. To remove it, right-click Buddy and choose Disconnect from Claude Code, which removes its hook entries and leaves your other hooks alone. Then quit Buddy and delete it from Applications.
Known limits
Claude Code's hook events are documented. Three Buddy features depend on parts of the Claude app that Anthropic does not document, so an app update can break them without notice:
- Chat titles and paused-chat detection, which read the Claude app's chat files.
- Jumping to a chat in the Claude app, which uses the app's
claude://code/continuelink. - Continue now and Auto, which type into the app's message box.
When one of these breaks, Buddy falls back to the folder name, to bringing the app forward, or to doing nothing. If that happens, please open an issue on GitHub.
Not affiliated with Anthropic
Buddy is an independent open-source project by Purplelink LLC. It is not made by, affiliated with, or endorsed by Anthropic. Claude and Claude Code are trademarks of Anthropic.