AI usage limits for macOS, iPhone & Apple Watch

Every limit you
are burning through,
before you hit it.

Agent Limits reads the Codex and Claude sessions already on your Mac and shows what is left of each rate-limit window — in the menu bar, on your iPhone, and on your wrist.

macOS 14+ · iOS 17+ · watchOS 10+ · No account · No backend

On the Mac

Two agents,
four windows.

Codex and Claude each get their own tab with a 5-hour and a weekly window, shown as the percentage you have left and the time until it resets. There is no percentage to set by hand — the numbers come from the providers.

Codex
Codex5H

89%

remaining

Resets in 4h 12m

7D

98%

remaining

Resets in 6d 23h

Claude
Claude5H

41%

remaining

Resets in 3h 07m

7D

76%

remaining

Resets in 4d 11h

Refreshes while you work

When a window starts moving, Agent Limits checks every minute. When nothing is changing it quietly backs off, so it is accurate when it matters and idle when it is not.

Nothing to configure

No account to create, no key to paste, no percentage to enter by hand. Open it and your current windows are already there.

Out of the way

It lives in the menu bar as a small pair of bars you can read at a glance. Click for the full breakdown; ignore it the rest of the time.

iPhone app

The same meters,
in your pocket.

The iPhone app shows exactly what the Mac shows: one tab per agent, and inside it the 5-hour and 7-day windows as two meters that fill to the percentage you have left. Switch agents with the native tab bar; the numbers arrive from your Mac.

  • Pair once by scanning the QR code the Mac displays — the code carries a local service identity and a pairing secret, never a provider credential.
  • The iPhone build contains no OpenAI or Anthropic client path at all. It cannot sign in, hold a token, or poll a provider; it only receives snapshots.
  • If the Mac is asleep or you are away, the phone keeps the last snapshot on screen and reconnects over Bonjour the moment the service returns.
  • Connections use TCP keepalive and Bonjour peer-to-peer, so pairing still works on networks that isolate Wi-Fi clients.

Opening it asks for fresh data

Whenever the phone — or its widget — connects, it sends a refresh request. The Mac answers with its cached snapshot immediately, then refreshes the providers that need polling and pushes the newer numbers back, usually within seconds.

Silent wake-ups

Pairing creates a private CloudKit zone holding nothing but a random identifier and a wake marker. A change there becomes a silent push; the phone then pulls the real snapshot from your Mac over the LAN.

Widgets that fetch

Each widget timeline reload connects to the paired Mac itself and refreshes the shared cache — even if you have not opened the app in days.

Background tasks

App refresh, a longer processing task for overnight windows, and a grace fetch as the app leaves the foreground. iOS decides when each one runs.

Home Screen & desktop

Widgets, on
both platforms.

A real WidgetKit extension is embedded in the Mac and iPhone builds. Widgets draw content only — the system supplies the background and transparency.

Codex5H

60%

Resets in 2h 53m

Agent Limits · small
Claude7D

76%

Plan
Max
Source
Mac sync
Updated
now

Resets in 4d 11h

Agent Limits — Custom · medium. Pick the agent and the window.
Codex5H

60%

Resets in 2h 53m

Codex7D

73%

Resets in 5d 4h

Both Limits · medium. Both windows at once.

The original small and medium widget keeps its static configuration so already installed widgets keep working; the configurable one lives on its own kind.

Apple Watch app

A glance is
the whole point.

The watch app is a grid you navigate without looking twice. Rotate the Digital Crown to move between Codex and Claude; swipe sideways to go from the 5-hour window to the 7-day one. Each page is the same filling meter, sized for a wrist.

  • Pages exist only for windows the agent actually reports — no empty screens for limits that do not apply.
  • Each page keeps just the period, the remaining percentage, the reset countdown, and an indicator when the data has gone stale.
  • Complications for the watch face: a circular percentage gauge plus corner and inline styles, so the number sits on your dial.
  • A rectangular Smart Stack widget with agent, period, percentage and countdown.
  • The watch app ships inside the iPhone build — install the phone app, open it once, and the first snapshot arrives.

Snapshots reach the watch over Watch Connectivity through three complementary paths — latest-state application context, a deduplicated background transfer, and an immediate message while both apps are reachable. The watch also asks for the newest snapshot whenever it becomes active. Results are cached in its own App Group, so complications still render with the phone out of range. Requires watchOS 10 or newer.

Privacy

No backend.
No analytics.

There is no server of ours between you and your providers, because there is no server of ours at all.

What never leaves your devices

  • Access and refresh tokens. They are not logged, copied, or uploaded.
  • Raw provider responses.
  • Usage percentages — they travel only across your own local network.

What CloudKit holds

  • A random pairing-zone identifier.
  • A wake marker: a timestamp and a random nonce.
  • Nothing else. It exists only to nudge your phone to ask your Mac.

Full details are in the privacy policy.

Get it

Install
Agent Limits.

Notarised build in preparation

The macOS build is being prepared for signed, notarised distribution so it opens without Gatekeeper warnings. This page will host the download as soon as it is ready.

Requirements

macOS 14+ for the Mac app, iOS 17+ for the iPhone app, watchOS 10+ for the watch app. The watch app ships inside the iPhone build.

First run

Open the Mac app once and add Agent Limits from the widget gallery. To pair a phone, scan the QR code the Mac shows. Launch at Login is recommended.

Good to know

The Mac host is intentionally not sandboxed so it can launch the locally installed Codex executable. The widget extension stays sandboxed.