Back to the Lab

The Lab · AI Tools

OhNine 2.1: My Claude Limit Crab Has Moods

Claw'd now sweats at 91% and lies next to a RIP tombstone when the weekly cap hits. 18 new animations, still free for macOS 14 and up.

RAXXO Studios 9 min read
TLDR This entry in one minute

Each line jumps to its section

  • At 91% of a session Claw'd gets scared, and at 100% he walks home crying under a rain cloud
  • A maxed weekly limit means RIP and two crows, a maxed Fable limit means a crutch
  • After a sync he plays one of 10 random tricks, never the same one twice in a row
  • All 928 new frames come from Python driving Blender, about 14.5 minutes for the whole batch

OhNine 2.1 is out, and the crab in my menu bar finally has opinions about my Claude usage. Mostly bad ones.

Claw'd got 18 new animations for this release. That's 928 rendered frames, and every one of them comes out of a single Blender scene built in Python, which is a sentence I didn't expect to write about a usage meter.

If you haven't met him, Claw'd is a chunky 3D toy crab who walks along the session bar in OhNine's panel. Why I built OhNine in the first place has the backstory. This post is about his feelings, and about how a Python script gives a crab feelings.

Scared at 91 percent

Claw'd walks along the session bar as your session fills up, so where he's standing already tells you roughly where you are. What he didn't have before 2.1 was a face for the bad part.

Now, at 91 percent of a session, he gets scared. He shivers with his eyes wide open, and he's visibly sweating, drops and all. Crabs don't sweat, as far as I know. Claw'd makes an exception.

I like 91 as the scary number. By then the warning means something, and there's usually still room to finish whatever you're halfway through. Or to decide not to start the big refactor.

I could have just turned the bar red. Red already means failed builds and unread badges, so one more red bar just blends in. I stare past them all day and don't register a single one. A crab sweating on my behalf in the corner of my eye is a lot harder to tune out. That's been the idea behind OhNine from the start. You shouldn't have to go looking for the number.

If you want to see it without burning your own session, the demo on the OhNine page has a slider. Push it to 91 and he starts to sweat. It's the quickest way to see what 2.1 changed.

At 100 percent he still does the sad walk home. He cries under a little rain cloud and trudges back along the bar, and he arrives at the start exactly when your session resets.

That timing does a lot of work. You don't need to read a countdown, because his distance from the start is the countdown. A long wait means a slow, miserable walk. A short one means he's nearly home. He isn't in a hurry, and neither is the reset.

So if you want to know how long you'll be waiting, watch the crab.

The weekly limits got their own endings

Running out of a session is annoying. The weekly limit is worse, so it got darker animations.

When the weekly all-models limit hits 100 percent, it's RIP. Claw'd lies flipped on his back with XX eyes next to a tombstone that says RIP, and two crows peck at him.

I know. It's a lot for a menu bar app.

The crows took a couple of passes. At real app size they were dots, so they got about 35 percent bigger. They were also near-black at first, and on the dark panel that meant they simply vanished. Now they're a lighter blue-black with a glossy coat, and you can tell they're birds.

The grave scene itself is drawn larger now and sits centred in the bar, instead of wherever your session happened to be when the week ran out. Once the weekly limit is gone, where the session stands doesn't matter anymore, so there's no reason to leave him lying at some random spot on the bar.

The model-specific limit gets a different scene. When your weekly Fable limit maxes out, Claw'd survives, but only just. His leg's bandaged and there's a plaster on his cheek, and he hobbles along on one crutch until that limit resets.

That crutch took two tries. The first one was short and mostly hidden behind his arm, and at app size it read as a slingshot. A crab with a slingshot is a very different mood. It's now a tall underarm crutch with the grip in his claw, and it finally looks like he's hurt instead of armed.

Those two scenes had to look different. A maxed Fable limit doesn't end your week, because other models still work, so a tombstone would be lying to you. If you're fuzzy on how the weekly caps sit on top of the session limit, how to check your Claude usage limit lays it out.

Ten tricks after a sync

Not every update is bad news. After a sync, Claw'd plays one of ten random tricks:

  • jump rope
  • juggling
  • a spin
  • hula hoop
  • a yo-yo
  • a jetpack
  • a skateboard kickflip
  • pixel "deal with it" sunglasses
  • a dance with music notes
  • a balloon that pops

He never plays the same one twice in a row. It's a small rule that matters more than it sounds, because two jetpacks back to back would look like a glitch. Random matters too. A fixed trick after every sync would be cute once and wallpaper by the end of the week.

There are rules, because a crab doing kickflips while you're sitting at 100 percent would feel like he's laughing at you. Tricks are off whenever he's in one of the bad moods above or sitting at a limit. They only play while the panel is open, so he isn't performing to an empty room. If you've got Reduce Motion switched on in macOS, they don't play at all, and that setting wins over everything else. If motion makes you queasy, a juggling crab is the last thing you need in the corner of your screen.

Syncs that run on the timer are capped at one trick every 90 seconds, however often the timer fires. Without that cap a short auto-sync interval would turn him into a circus act, and the joke dies somewhere around the fourth yo-yo.

There are a couple of secrets in there too, and I'm not explaining them. I'll admit to one thing: there's a rare golden version of the spin.

It didn't start out golden, though. The first render looked bronze, because the dark studio lighting was reflecting in the metal and dragging the whole thing brown. The fix was less metal and more colour.

How the 928 frames got made

None of Claw'd is keyframed by hand. Blender runs headless, no window, with a Python script that builds the scene and drives every frame. Each pose is plain math, sine waves and smoothstep curves worked out frame by frame.

That sounds like overkill for a crab. It paid off the moment I added props. Every new prop is tagged with the animations it appears in and hidden everywhere else: the crutch, the tombstone, the crows, the rope, the hoop, the skateboard, the jetpack, the balloon and the rest. Because of that tagging, the five animations from 2.0 came out byte-identical after eighteen new ones moved into the same scene. Nothing I added could leak into the old ones. Updating an app shouldn't quietly change the parts people already liked.

The numbers, for anyone who likes them. 18 new animations, 928 frames, about one second per frame on the Mac's GPU, so roughly 14.5 minutes for the whole batch. All 23 animation strips together take up 3.8 MB inside the app after compression.

An automatic bounds check projects every frame and measures it against the frame edges. It caught two things. The balloon poked out of the top by 11 pixels, and the steam in the "nein" animation by a single pixel. Both got pulled back in. A clipped balloon at app size looks like a rendering bug, and anyone who reported it would be right. I'd never have spotted one pixel by eye, which is exactly why the check exists. I care about that kind of thing more than is healthy, and it's the same itch that had me rewriting OhNine's onboarding screen three times.

The landing page got its own render on top. Every animation was rendered again at twice the resolution as WebP sprite sheets, 8 frames per row. The rows aren't a style choice: WebP caps an image side at 16383 pixels, so one long strip wasn't an option.

Bottom Line

Two settings changes before you update. Outfit is still the default font, but the font menu now has Comic Sans MS, for the culture, and it applies to the panel text too. The OpenDyslexic option is gone. If you use the System font, the auto-sync row is fixed: at 11 point the System font's labels run about 22 points wider than Outfit's, which pushed the word "manual" onto a second line. It fits on one now.

OhNine is still free, and nothing it reads leaves your Mac. You need macOS 14 or later, on either Apple silicon or Intel. Already on 2.x? The in-app updater will offer you 2.1. New here? Grab it from the download page.

OhNine isn't affiliated with Anthropic. "Claude" is a trademark of Anthropic.

And if you'd rather meet him before installing anything, the Claw'd demo runs the moods and all ten tricks in the browser. Flip "Fable limit hit" for the crutch or "Weekly limit hit" for the crows, then press Sync and see which trick you get.

Filed under AI Tools Claude macOS OhNine
Get the next entry by mail
One mail when a new entry lands. No spam. Unsubscribe anytime.
RAXXO Studios

Written by

RAXXO Studios

One designer in Berlin, close to twenty years in. I build tools with AI, use them daily, and write down what happened.

Share this entry

X LinkedIn
All entries