Back to Lab
RAXXO Studios 10 min read No time? Make it a 1 min read

OhNine: Why I Built a Menu Bar App for Claude Limits

AI Tools
10 min read
TLDR
×
  • OhNine is a free menu bar app that tracks Claude session and weekly usage limits in real time
  • It sends native alerts at 80%, 91%, and 100% so a session never ends without warning
  • The hard problem was never reading a number, it was making the warning arrive before the cutoff instead of after
  • Building a zero telemetry tool changed how I judge every product I ship after it

The Problem: Hitting a Wall You Cannot See

For months, my Claude sessions ended the same frustrating way. I would be deep in a conversation, mid thought, actually making progress, and then the reply would just stop. No countdown. No yellow light. No warning that said "you have three messages left, wrap up." One second I was working, the next I was staring at a message telling me to wait for a reset I never saw coming.

The frustrating part was not the limit itself. Usage limits exist for a reason, and I understand why they are there. The frustrating part was the total lack of visibility into where I stood. Claude Code and claude.ai will occasionally mention you are close to a cap, sometimes at 97 percent, which is technically a warning and practically useless, because by then you are already mid-thought with no time left to land it cleanly.

It got worse once I noticed the layers. There is not one limit to track, there are several stacked on top of each other: a session limit, a rolling weekly cap, and separate caps depending on which model you are running. Switching models mid-session, thinking you had found a workaround, only to hit a wall from a different direction, was its own specific kind of frustrating. None of these layers showed up anywhere. There was no dashboard, no menu bar icon, nothing you could glance at the way you glance at your laptop's battery percentage before deciding whether to plug in.

So the wall kept arriving the same way: mid-flow, mid-sentence, with zero warning. Coding sessions got cut off between a question and its answer. Writing sessions lost momentum at the worst possible sentence. It is a small thing described out loud, and it was a genuinely disruptive thing to live with every day, because flow state does not survive a surprise stop.

I looked for something that already solved this before I considered building it myself, the way I usually do. General system monitors exist, and a few browser extensions promise usage tracking for various AI tools, but none of them understood the specific shape of Claude's limits: a session cap that resets on its own clock, a weekly cap that resets on a different one, and a model-specific cap layered on top of both. A generic tracker built for a different product could not show me any of that correctly, because it was never built with these specific rules in mind. Nothing existed that watched Claude specifically, showed the layered limits in one place, and warned early enough to actually be useful instead of decorative. That gap is the entire reason OhNine exists.

What OhNine Actually Does

OhNine is a small app that lives in your menu bar and does one job well: it watches your Claude usage and tells you where you stand before you hit the wall, not after. It is not a browser dashboard you have to remember to open, and it is not a browser extension tied to one tab. It sits in the same place your clock and battery icon sit, always visible, never in the way.

The core of it is a live progress bar for your current session, showing percentage used and a countdown to reset. There is a small mascot that walks alongside the bar as you use up your session, and when you hit 100 percent it visibly gets tired and dims out before quietly walking back to zero on reset. It sounds like a small detail. In practice it is the difference between a number you have to interpret and a state you understand instantly, out of the corner of your eye, the same way a fuel gauge works without you reading the manual.

The alerts are the part that actually solves the original problem. Native desktop notifications fire at 80 percent, 91 percent, and 100 percent, three separate warnings before impact instead of one warning that arrives after the fact. That gap between 80 and 91 is deliberately narrow, because the goal is to give you a real chance to wrap up a thought before the model goes quiet, not to nag you early and then go silent until it is too late to matter.

Beyond the current session, OhNine tracks the weekly caps too, including the separate cap for Sonnet-specific usage, so switching models does not quietly reset your understanding of where you stand. Sync runs automatically, anywhere from every 30 seconds to once an hour depending on your preference, or you can trigger it manually if you would rather control exactly when it checks. Dark and light mode are both built in and switch with one click, because a tool that lives in your menu bar all day should not fight your eyes at any hour.

Why a Native App, Not a Web Dashboard

I could have built OhNine as a website you check, or a browser extension that adds an icon to your toolbar. I chose neither, on purpose, because the entire value of this tool depends on it being ambient rather than something you have to remember to visit.

A web dashboard only helps the moment you think to open it, and the whole problem I was solving was that people, myself included, do not think to check a usage meter until they have already hit the wall. A browser extension gets closer, but it is still tied to having a browser window open and a toolbar visible, which is not how most of my own Claude Code sessions actually happen. A meaningful share of my work runs in a terminal with no browser in sight at all.

A native menu bar app solves both problems at once. It is present regardless of what application has focus, whether that is a terminal, an editor, or nothing at all. I built it on Electron, the same technology behind tools like VS Code, Slack, and Discord, specifically because it is proven, cross-platform, and not going anywhere as a foundation. OhNine runs on macOS across Apple Silicon and Intel, on Windows 10 and newer, and on Linux through both AppImage and .deb packages, because limiting a tool like this to one operating system defeats the point of building something meant to sit quietly in the background of however people actually work.

Cross-platform support was not a checkbox I added at the end, it shaped decisions from the first line of code. A tool meant to protect flow state has to work the same way regardless of which machine someone is on that day, whether that is a work laptop running Windows or a personal machine running Linux. Testing three operating systems for every release takes longer than testing one, and I still think it was the right trade, because a menu bar app that only works for a third of the people who might want it is not really solving the problem, it is just solving it for whoever happens to already be on the right platform.

This is the same instinct that shaped the .claude folder guide I wrote earlier: the best tooling around Claude Code is the tooling you barely notice, because it is already doing its job before you had to ask. A limit tracker that requires effort to check has already failed at the one thing it exists to do.

The Privacy Decision That Shaped Everything Else

The single decision that mattered most in building OhNine was not a feature. It was deciding, early, that the app would collect zero data. No analytics, no telemetry, nothing phoned home, nothing stored anywhere except your own machine. I do not know how many people have installed it, I do not know how they use it, and I genuinely cannot see any of it. That is not a limitation I am working around, it is the entire design.

That decision made the engineering harder in small ways. I could not lean on usage analytics to tell me which features people actually touched, the way I can with tools that do report back. Every design choice in OhNine came from direct feedback, from watching my own usage, and from what people chose to say out loud, not from a dashboard telling me what was popular. It is a slower way to build, and I would make the same choice again without hesitation.

A tool that watches how close you are to a hard limit is, by nature, sitting close to something personal: how much you actually use Claude, when, and how intensely. Handing that information anywhere else, even anonymized, even for good reasons, felt like the wrong trade for a tool whose entire pitch is peace of mind. Trust is the actual product here, more than the progress bar or the alerts. The moment OhNine started reporting anything back about you, it would stop being the calm, ambient tool it is supposed to be and start being one more thing quietly watching you work.

That same principle carried straight into every other free tool I have shipped since, including the plugins and skills I cover in my guide to the best Claude Code tooling. If a tool asks for trust, it has to actually earn it, not just claim it in a privacy policy nobody reads.

Bottom Line

OhNine started as a fix for my own recurring frustration: hitting a Claude usage wall with zero warning, mid-thought, mid-session, every single time. It turned into a small menu bar app that tracks session limits, weekly caps, and model-specific caps in one place, and warns you at 80, 91, and 100 percent instead of after the fact.

The bigger lesson was not about progress bars. It was that a tool built to protect someone's flow state has to actually respect them while doing it, which meant zero telemetry, zero data collection, and zero compromise on that even when it made my own job harder. That decision now shapes how I evaluate every tool I build, free or paid.

If you use Claude Code or claude.ai enough that a surprise cutoff has ever cost you a train of thought, that is exactly the gap OhNine exists to close. It sits quietly in your menu bar, tells you the truth about where you stand, and asks nothing back in return. For anyone who wants to go further into how I set up Claude Code itself, my rundown of terminal tools worth knowing is a natural next stop.

Stay in the loop
New tools, drops, and AI experiments. No spam. Unsubscribe anytime.
Back to all articles