focusapps
TIDELINE

Three tides.
One glance.
Drei Pegel.
Ein Blick.

A menu-bar tide gauge for your Claude, OpenAI Codex and Grok usage. Water levels rise toward each limit and recede when the window resets. Left-click for the full breakdown. Right-click for the menu.

Download for MacFür den Mac laden
Tideline for Mac, the menu-bar popover: three provider cards, Claude (Max), Codex (Plus) and Grok (X Premium), each headed by its ring mark and a gear icon, with a percent bar per window and its reset time under the window name. Settings sit behind the gear in the footer.
~ THE GAUGE

Fill is usage.
Colour is headroom.

Every window fills like a tide staff: the water is how much of the window you have used. The colour reads the other way. Green means room, amber means it is tightening, red means the limit is close.

In the menu bar each provider is one ring glyph. The outer ring is the 5-hour window, the inner ring the week, so one small mark shows both. The item takes only the room it needs, with the same space around it as the icons next to it. Prefer the old tubes? Right-click, Menu Bar Style, Pills. Each provider has its own gear: accent colour, window, its place in the order, and the text beside its mark. Show the percent and a reset timer for the 5h window, the week, or both, with "5h" and "wk" labels if you want them. Colour the rings by usage or by window. When a window resets, its ring drains to empty.

~ THREE PROVIDERS

Read where they live.

Pro, Max & Claude Code.

Reads the usage for the Claude Code login you already have, fetched straight from Anthropic. Nothing to set up: no prompt, no Keychain permission to grant, no password. One switch in the menu turns it off again.

OpenAI Codex, locally.

Reads your Codex usage from its own files on your Mac, watched live. No login, no network. It updates the moment Codex does.

Grok, from the CLI.

Reads Grok CLI usage from its own log file on your Mac. One weekly credit window, with the plan tier shown beside it. No login, no network.

~ WHEN IT DOES NOT KNOW

When it does not know,
it says so.

A reading older than a day drops its colour and shows its age instead. A reset that has passed says so. A window your plan does not have is never drawn.

A rate limit renders as a dimmed throttled state, never as a red bar you did not earn. The gauge claims nothing the data cannot back.

A coloured fill is a truth claim.

~ PRIVATE

First-party or local.
Nothing else.

FIRST-PARTY

Your login, your numbers

Claude usage comes from your own Claude Code login, read into memory on each refresh. The token goes to Anthropic only, and never to disk.

LOCAL FILES

Codex and Grok stay home

Both are read from their own files on your Mac. Nothing is fetched, nothing is sent. They update the moment the CLI writes.

QUIET

No analytics

No usage numbers go to focusapps. Tideline checks its license key with focusapps.ch, and asks GitHub once a day for updates.

~ FREE LICENSE

Get a free 90-day key

Tideline uses a license key. Enter your email and we send you a free key. It is valid for 90 days from the day you activate it. We first send a confirmation link.

One key per email address. We use your address for the license and for nothing else.

~ AVAILABILITY
  • ~macOS 14.0 or later
  • ~Apple Silicon + Intel universal
  • ~Notarized DMG, auto-updates
~ CHANGELOG SHOW RELEASES +RELEASES ZEIGEN +HIDE -ZUKLAPPEN -
1.5.1

Quiet while Codex and Grok run

  • FIXEDWhile Codex or Grok ran, Tideline could use a full core or more. It read its files again on every write. Now at most one read runs at a time, and a test run with 20 writes a second dropped from 73% CPU to under 2%.
  • CHANGEDA Codex change reads only the files that changed, and a Grok change only the new lines of the log.
1.5.0

Readable on any wallpaper, colours by window, and a ring that drains

  • FIXEDAn expired Claude login keeps the last reading on screen: a grey ring with its percent in the menu bar, and the reading with its age in the card. Before, the menu bar showed only the idle mark.
  • FIXEDThe reset timer and window labels use the full text colour. On a tinted wallpaper they almost disappeared.
  • CHANGEDThe text choices name the window: Off, 5h, Weekly or Both.
  • NEWRing colours by usage or by window: 5h in teal, the week in purple. At 90% or more a window is red in every mode.
  • NEWWhen a window resets, its ring or pill drains to empty once. Not with Reduce Motion.
1.4.1

Tighter menu-bar spacing, and a reset timer

  • FIXEDThe menu-bar item has the same space around it as the items next to it. A ring with "5%" takes 52pt, down from 63pt, and a ring alone 32pt, down from 42pt.
  • NEWA reset timer beside the mark, such as "2h05m" or "3d04h", for the gauge window or both windows. It shows only next to a current reading.
  • NEWThe percent for both windows. Pills then show one pill per window, each with its own number.
  • NEWWindow labels: "5h" and "wk" ahead of each number. The menu-bar style and the labels are also in the popover's footer.
1.4.0

A smaller menu bar item, rings, and a refreshed popover

  • CHANGEDThe menu-bar item fits what it shows. One provider with "5%" took 57pt. It now takes 46pt as rings and 36pt as pills, and 26pt or 16pt without a number.
  • NEWRings, the new default. One ring glyph per provider: the outer ring is the window the number names, the inner ring the provider's other window. The pills stay: right-click, Menu Bar Style.
  • CHANGEDA refreshed popover. Each card shows its ring, reset times sit under the window names, and the settings are behind the gear in the footer. Liquid Glass buttons on macOS 26 and later.
  • FIXEDA reading older than 24 hours never keeps its colour. Before, a healthy reading held across a long sleep stayed coloured until the next fetch.
  • CHANGEDIncrease Contrast strengthens the ring tracks.
1.3.4

The in-app updater gets Sparkle's latest security fixes

  • CHANGEDSparkle 2.9.6. A delta patch can no longer write through a symbolic link, the installer moves the downloaded archive more safely, and a package that fails its signing check is refused.
1.3.3

A Codex window that had reset still showed a full red 100%

  • FIXEDA window whose reset has passed shows no number and no fill, in the menu bar and in the popover. On Auto, the menu bar moves to a window that is still running.
  • FIXEDPopover bars lose their fill once a reading is more than 24 hours old, the same rule the menu bar already used.
  • FIXEDAn account with no active Claude limits got a request every 3 minutes. That answer is now cached like any other.
  • FIXEDWaking the Mac no longer cancels a throttle cooldown. A Retry-After of up to 2 hours is kept.
  • FIXEDIf a token-refresh retry is throttled, the card says throttled, not "Token expired".
  • FIXEDA Claude percentage Tideline cannot read keeps the last reading, marked stale. It used to say "No active limits right now".
  • FIXEDCodex windows that are not whole hours keep their minutes: 90 minutes reads "1h30m".
  • FIXEDCodex session files over 128 MiB are read. Tideline reads only their last 512 KiB.
  • FIXEDThe license line says when a license ended, not "expires today" for a week.
  • CHANGEDA Claude card with no reading names the cause: Anthropic not reachable, an unreadable answer, throttled, a server error, or a locked keychain.
  • CHANGEDThe card chip says "needs a tap", "retrying" or nothing, instead of "reconnect" for every state.
  • CHANGEDClaude holds its menu-bar column from launch, so the item does not widen when the first reading lands.
  • CHANGEDDeactivate this Mac asks once before it removes the key.
  • CHANGEDThe About panel names all three servers: Anthropic, focusapps.ch for the license key, GitHub for updates.
1.3.2

A spent Codex limit showed an empty card

  • FIXEDCodex now writes a second rate-limit line per turn for a "premium" bucket, with no windows and your plan name still on it. Tideline took the newest line, dropped the 100% it had read two seconds earlier, and showed an empty Plus card while the 5h window was used up. A line with no window no longer counts as a reading. The newest line that has one stays, with its own time.
  • FIXEDA Grok plan with no published percentage says so. SuperGrok omits the weekly percentage while the week stands at 0%, and Free never publishes one. The card no longer says "No usage data yet." after Grok has just run. There is still no 0% bar.
  • FIXEDThe Codex credit balance reads when it arrives as text.
  • CHANGEDThe menu-bar gauges read as liquid in a tube: a bright surface line and a faint glass wall. The idle mark is a staff crossing a wave. Same size, same footprint.
  • CHANGEDThe popover bars use the same fill, and each card has a hairline edge.
1.3.1

Claude usage stayed blank whenever there was nothing to report

  • FIXEDAnthropic sends an empty window for a limit you have not used yet, which is what you get right after a weekly reset. Tideline read that correct answer as a broken one: no Claude numbers, nothing saved, and a three minute wait before it asked again. Claude came back only once some window passed 1%. An empty answer is now read for what it is, and the card says "No active limits right now".
  • CHANGEDAn empty answer and a real zero stay two different things. Tideline still draws no bar for a window the server did not report, and it still never invents a 0%. Only a zero the server actually sent is painted as a zero.
  • CHANGEDThe Claude request identifies itself as Claude Code 2.1.239.
1.3.0

Tideline takes a license key, and the key is free

  • NEWA license key activates the app. Get one free on this page: enter your email, confirm it, and the key arrives by mail. It is valid for 90 days from the day you first activate it. One key covers one Mac at a time, and "Deactivate this Mac" frees the seat so the key can move.
  • NEWThe key is verified on your Mac against a signed token, so a normal launch never calls the license server and a lost network is not a lost license.
  • CHANGEDWithout a valid key the app stops rather than pretends: no Claude request, no Codex or Grok file read, no cached percentage left on screen. The menu bar shows a lock and the popover becomes the unlock card. There is no trial window in front of the gate, because the key is free and takes two minutes.
  • FIXEDCmd+V pastes. A menu-bar app has no menu bar of its own, and macOS hangs the standard editing keys off exactly that menu, so paste, copy, cut and select-all did nothing anywhere in the app. They work now, in every field.
1.2.5

A lapsed Grok plan kept its last percentage on screen for days

  • FIXEDWhen a Grok plan lapses mid-week, Grok keeps reporting the same billing period but stops sending a percentage. Tideline reached back past that silence and kept painting the last percentage the old plan ever sent, under the old plan's name, until the week ran out. A reading is now dropped as soon as the plan changes underneath it, and a percentage older than three hours is never revived to override a newer reading that reports none.
  • NEWGrok usage reads on plans without credits. Grok publishes a percentage only for plans that include weekly credits. The others get a rolling token budget and had nothing on the card at all. When xAI refuses a request because the included usage is spent, that is now a full bar under the window it names, with the time it clears.
  • CHANGEDThere is no estimated bar for the rest of that budget. Adding up the tokens in Grok's own log came out about 6% short of the real counter and cannot see anything spent on grok.com or in the X app.
  • FIXEDThe card told you to run Grok when Grok had just run. A plan with no percentage to publish says so instead of showing the first-run prompt.
1.2.4

The Claude number was furthest behind exactly when it moved fastest

  • CHANGEDBackground checks ran on a flat quarter-hour rhythm, so the Claude percent could be fifteen minutes behind. Tideline now checks about twice as often while your 5-hour window is filling and returns to the quarter-hour rhythm the moment it goes flat. A rate limit still parks it for at least fifteen minutes. Anthropic's usage endpoint shares a tight request budget with your own Claude Code.
  • NEWClicking the menu-bar item checks before it shows you anything, with either mouse button. The right-click menu never refreshed at all, so "Refresh now" sat above numbers that could be a quarter of an hour old. Switching Space and waking a display count too.
  • NEWReadings say how old they are. Past five minutes the card prints the age, and hover text and VoiceOver put the number in the past tense: "5h was 47% used, 12m ago". A number that is a few minutes old is old, not wrong.
1.2.3

Switching Claude off wiped two readers that had nothing to do with it

  • FIXED"Disconnect & Clear Data" wiped every provider's cached numbers on the way past, including the Codex and Grok file readers. It is now "Turn Off Claude Usage" and leaves them alone. "Clear Stored Usage Data" is still the one that forgets everything.
  • FIXEDClear Stored Usage Data reaches the readers' own in-memory copies. Their numbers come back on the next check, re-read from your local Codex and Grok files rather than from anything Tideline stored.
  • CHANGEDA switched-off Claude card is just the grey "off" chip. Gone: the paragraph restating a choice you had just made, and the button repeating the menu item you used to make it.
1.2.2

Claude usage stops asking permission and starts fixing itself

  • CHANGEDThe one-time "Enable Claude usage" step is gone. Tideline reads the Claude Code login on your Mac the same way it reads Codex and Grok, silently, from launch.
  • FIXEDA failed Claude read heals on its own after a restart, a locked Keychain or a Claude Code re-login. The one case that still waits for you is a read that timed out, because macOS may have left a Keychain dialog on screen.
  • FIXEDThe card keeps the specific failure instead of decaying into a generic line on the next check.
  • FIXEDThe Claude opt-out survives a restart, and a reading still on the wire can no longer come back and repaint the gauge after you switch it off.
  • NEWClear Stored Usage Data is its own menu item, available whether Claude usage is on or off.
  • FIXEDThe About window no longer renders its credits in a bordered box that looked scrollable and cut the last line off.
1.2.1

Grok stuck on the finished week's level, sometimes for hours

  • FIXEDAfter the weekly reset, Grok logs its billing config a few minutes before the new percentage lands. The gauge kept showing the finished week's level with a reset time already in the past. It now refuses to paint a reading whose reset has passed and waits for the current period's number.