Show HN: macOS menu bar app to track Claude usage in real time
github.com149 points by RichHickson a day ago
149 points by RichHickson a day ago
I built a macOS menu bar app to track Claude usage in real time via API after hitting limits mid-flow too often.
Signed and notarised by Apple. Open source.
https://github.com/richhickson/claudecodeusage
https://x.com/richhickson
Alternatively there's also this with 1.7k stars already and supporting more services (Despite the name): https://github.com/steipete/CodexBar (https://codexbar.app) btw, I have failed to make the proper use of either of them - claudecodeusage keeps saying that I'm not signed in (I have Claude Desktop and CLI installed and signed in on both). CodexBar keeps saying "Claude usage probe timed out", even though it does show some numbers. I don't have a subscription, I just use the API. Good shout. CodexBar covers a lot more ground. This one is intentionally minimal and Claude focused because that is all I personally needed. Is it safe ? It needs to reads Keychain. Like the OP app The app only reads ONE specific keychain entry: [flagged] "I'm on Intel and would be interested in this if you find a way to make that work." Funny thing I went down a rabbit hole, cause I first scanned the open PRs and saw a PR to enable universal builds to support intel macs but the whole thing was pure AI slop and someone commented that codexbar already supports intel, and sure enough v.15 added it (the AI slop PR completely missed that), I then looked into the cask script and it has a hardcoded dependency on arm which prevents brew from installing v.17 even if it's already an universal binary since v.15. I came to the same conclusion before making that snarky and apparently offensive comment. Live to learn I guess. You mean "after" making the comment? Your offensive comment makes no sense if you already had the universal build context This is a great idea and a useful one for avoiding having to monitor Claude's consumption.
I've often exceeded the limit mid-process. If I'm not mistaken, something like this already exists, but I like the graphics and how the information is displayed.
Congratulations! This looks great. What am I doing wrong? I downloaded it, installed, but all I see is a red X in the toolbar. When I click on it, it says "Authentication expired. Run 'claude' to re-aut..." so I run claude in terminal and still nothing... Interesting, but not original - a simple search shows at least a dozen same/similar (better?) solutions? Anything that yours does that those don't? Love it, installed and set it to run at Login. Can I follow you on any social media that isn't Xitter? Thanks, appreciate it. Honestly, I am only really on X at the moment. [flagged] If you honestly think only “leftwingers” don’t like X you’re living in a bubble (ironically probably on X lol). Plenty of us hated Twitter well before Elon renamed it. Just yesterday I was trying to figure out a method to accurately estimate my remaining usage for the five hour sessions for a shell script. It wasn't until I pointed Claude at your repo and had it make something based off of that that I got it to work well. Thank you! I tried another alternative yesterday as I found myself hitting that /usage command too often and it didnt work too well but yours worked straight out of the box! Great job! I built another tool that should have really been part of the core Claude Code CLI (which you may or may not find useful): https://github.com/agentic-utils/ccs It lets you search and resume past Claude code conversations from anywhere. Have you seen aichat[0]? Doesn't support the "from anywhere" part, but the resume strategies are pretty cool. [0] https://github.com/pchalasani/claude-code-tools#aichat-sessi... If I wanted to vibe code my own macOS menu bar apps is this a good starter project to use as a template? Are there any others? Do I just not need one (claude code can do it without a starter template at all)? Use Hammerspoon [0][1], it comes with a lot of macOS integrations out of the box and you write Lua, which takes zero effort to pick up and use. For me a big benefit is that you don't need to touch Xcode at all. That is exactly what I did. Claude scaffolded it from scratch based on behaviour, then I iterated and had Codex review it for safety. Speaking of the macOS menu bar, is there some way to make it overflow into a hidden area behind an "expand" button that would appear when there is no more room, like the notification area in Windows does? The macOS UI decision of "just pretend that whatever doesn't fit to the right of the notch doesn't exist" is baffling. I've seen a few apps that claim to do that, but it's always done in some really hacky way (such as needing screen recording permissions), and the behavior is never that of simple overflow handling. Instead they have "always hidden" sections and things like that, which is not what I want. I used to use Bartender, which worked really well, until the newest version, which had so many issues. Since then, I've just basically put up with it. The new version has improved a bit since launch, you may want to give it another try. I had stopped using it since the private equity buyout because it needs pretty serious permissions to do its job…maybe I’ll give it another look. No template needed IMO. I used CC just yesterday to build a native MacOS menu bar app by using plan mode (opus) until there was alignment then to edit mode for the build (I use Zed for the prompting). CC walked me through the needed Xcode project setup and handled all of the code there after. I’m sure something more complex would be more challenging but I was happy with a two-shot result for this native menu bar app. "Follow me on X" Why... just why? Why do people keep insisting on using it? I certainly won't. I wonder if it's because they don't see other relevant low-cost/overhead solutions. "Follow me on facebook" certainly isn't going to be a win. "Follow me on Bluesky or Mastadon" is going to be ignored. "You can see my comments on insta" won't be relevant. "My TikTok is where it's at" might get you some young followers. Other solutions (your own blog, medium, substack, etc), all come with more overhead and setup. The charitable explanation is "because that is where most people are." Network effect is real. Was that ever true, even during the Twitter days? I guess that depends on the scope. For people who like that flavor of social media, Twitter was where it was at, and X remains the main place. But if the scope is 'of all people' then of course it is not true -- most of us (myself included) never got into Twitter or any of the similar social media sites. Because that's what he uses. Instead of shaming about using X and going off-topic, don't comment at all or comment something about the project. [flagged] Why do you assume it’s political? Child pornography is, at least ostensibly, not a partisan issue. [flagged] Same here, it reads like a political statement. Easy enough to remove it though. https://github.com/richhickson/claudecodeusage/blob/0bb26c05... [flagged] Very constructive comment, the “grow up already” really was the cherry on top. (Yes, this is sarcasm)
dewey - a day ago
iLemming - 3 hours ago
RichHickson - a day ago
ttoinou - a day ago
RichHickson - a day ago
Service: "Claude Code-credentials"
This is the entry created by the official Claude Code CLI when you log in. The app:
1. Only reads - never writes, modifies, or deletes any keychain data
2. Only accesses this one service name - cannot read any other passwords, keys, or credentials
3. Extracts only the OAuth access token - used to call api.anthropic.com/api/oauth/usage
4. Sends data only to Anthropic's API - no analytics, no third-party servers
The token never leaves your machine except to Anthropic's own API endpoint. You can verify this yourself - the entire source is ~400 lines of Swift: https://github.com/richhickson/claudecodeusage
macOS will also prompt you the first time the app tries to access this keychain entry, giving you control to allow or deny.
touristtam - 19 hours ago
prawn - 15 hours ago
DrammBA - 15 hours ago
touristtam - 9 hours ago
DrammBA - 16 minutes ago
8mobile - 14 hours ago
ebbi - 17 hours ago
seriocomic - 14 hours ago
codepoet80 - a day ago
RichHickson - a day ago
cbeach - 20 hours ago
einsteinx2 - 20 hours ago
JLO64 - 17 hours ago
brtkwr - 21 hours ago
SparkyMcUnicorn - 19 hours ago
kingkongjaffa - a day ago
Etheryte - 21 hours ago
RichHickson - a day ago
realharo - a day ago
RichHickson - 21 hours ago
karlshea - 20 hours ago
einsteinx2 - 20 hours ago
qaz_plm - 19 hours ago
rootlocus - 21 hours ago
travisgriggs - 17 hours ago
rootusrootus - 21 hours ago
platevoltage - 21 hours ago
rootusrootus - 21 hours ago
worldsavior - 8 hours ago
cbeach - 20 hours ago
quietmonkey - 19 hours ago
hasperdi - 10 hours ago
antfarm - 9 hours ago
diimdeep - a day ago
arondeparon - 21 hours ago