Notchmeter
Free and open source · MIT

An Antigravity usage tracker in the MacBook notch

Notchmeter shows the session and weekly quota Antigravity's own panel shows for its model groups, Gemini models, and Claude and GPT models, beside the notch, each with a pace tick, a projection and its reset, from the same Code Assist endpoint Antigravity asks, under Antigravity's own client identity. It needs one Google sign-in through Gemini CLI, and it shows no cost, because Antigravity meters quota rather than money.

macOS 15 or later · Apple silicon or Intel · no account, ever

What Notchmeter shows for Antigravity

Antigravity and Gemini CLI meter against the same Google backend and were one ring until 0.9.0; since then each has a ring of its own, read under its own identity, because the backend picks which product's licence to check from the caller's, so the two can hold different quotas on one Google account. This page is Antigravity's; the Gemini CLI page is the other.

  • The groups Antigravity's panel shows: Gemini models and Claude and GPT models, each with a session, weekly or daily bucket whose length Google declares, so every one has a pace tick and a projection from the first read.
  • The per-model buckets as the fallback when the summary is not answered, grouped by pool, with a length inferred from their resets and said to be.
  • Unknown is not untouched: a bucket with no fraction draws no figure, never 100% left; an explicit 0 is exhausted; and an answer from the host that is not metering you, every bucket untouched at one identical reset, is shown with no figure and a caption rather than as an untouched quota.
  • No cost: Google meters quota, and publishes no price and no token count, so the Cost card has no Antigravity row, not a $0.
  • Sessions: none on this ring. The Antigravity IDE has hooks of its own and Notchmeter registers nothing there, by decision; since 0.9.0 the Gemini CLI hook lights Gemini CLI's own ring, not this one.
The notch cut into the right-hand edge of the screen, the readouts inside the opaque shape, and the panel open beside it across a strip of desktop.
The notch on the right edge with the panel open beside it; drawn from fixed readings, so it shows nobody's usage.

Where each figure comes from

The same internal Code Assist calls Antigravity makes at every start, under the identity the backend checks the licence by.

Read on 2026-09-24 from the code and docs/accuracy.md.
FigureSourceNotes
The groupsPOST …/v1internal:loadCodeAssist, then :retrieveUserQuotaSummary with an empty body, the answer Antigravity's own panel showsAsked first, because its windows declare their length and need no inference.
The per-model bucketsPOST …/v1internal:retrieveUserQuota, the fallbackA project-scoped 403 is retried with {} before it counts as a refusal: a licence is held by the user, not a project.
The identityWith ~/.gemini/antigravity-cli, /Applications/Antigravity.app or ~/.antigravity present: User-Agent: antigravity, a Client-Metadata naming the IDE, and ideType: ANTIGRAVITYThe backend picks which product's licence to check from the caller's identity, and answers an Antigravity-only account “no valid license” under any other. It is another client's identity, sent because the endpoint answers no other, and said here and in the privacy document.
Which hostThe host logged in ~/.gemini/antigravity-cli/cli.log, else daily-cloudcode-pa.googleapis.com then cloudcode-pa.googleapis.com, keeping the first answer with a live figureThe other deployment answers every bucket untouched with a reset five hours off, whatever has been used.
The staleness guardA window read untouched across three consecutive polls while Antigravity was seen at work, its conversations under ~/.gemini/antigravity or ~/.gemini/antigravity-cli/conversations changing, loses its figure and says it is unverifiedJudged by history, never by value. Antigravity has no hook, so its own files are the sign it was at work.

The login is ~/.gemini/oauth_creds.json, the Google login Gemini CLI caches. The Antigravity app and its agy command keep theirs in the Keychain and publish quota only through a local server inside the running app, which Notchmeter does not attach to, so the Antigravity meter needs one Google sign-in through Gemini CLI (gemini, then Login with Google). The token is read, never refreshed or written, and sent only to Google as Authorization: Bearer.

Why there is no cost: the endpoint returns per-group and per-model windows and the fraction of each that is used, no price, and no token count that a published rate could be applied to. Gemini's API rates would not help, because an Antigravity seat is not billed at them. There is nothing to derive a dollar figure from, so none is shown. Every rule on this page is pinned by tests and written down in Antigravity: quota, and no cost.

What it says to do about it

The Advice strip's lines for Antigravity's groups and models.

Switch models
Gemini models weekly is 91%. Claude and GPT models is 34%. Switch models, not tools.A group's window is 85% used and another group's has 40% left. Antigravity publishes no tool-wide window, so there is no overall figure to name instead.
Run-out
At this rate you hit the Antigravity Gemini models session cap today at 4:10 PM, 2h 20m before reset.A window is behind pace and has a run-out time: for a session window, from the pace of the hours you worked, measured in the drain log; for a weekly or daily one, from how far it rose over the last day, idle hours included; until the log has enough, from the even-burn projection.
Wait
Antigravity Gemini models session resets in 40m; wait rather than switch.A window is out or behind pace, resets within the hour, and no other tool on a paid plan has room.

Questions

Why does the Antigravity meter need Gemini CLI's login?

Because it is the only Google login on disk. The Antigravity app and its agy command keep their token in the Keychain and publish quota only through a local server inside the running app, which Notchmeter does not attach to. The login Gemini CLI caches in ~/.gemini/oauth_creds.json after Login with Google is read, never refreshed or written, and sent only to Google's Code Assist endpoints.

Which windows does it show?

The ones Antigravity's own panel shows: a group for Gemini models and one for Claude and GPT models, each with a session, weekly or daily bucket whose length Google declares, so each has a pace tick and a projection from the first read. When the summary is not answered it falls back to the per-model buckets, grouped by pool, with a length inferred from their resets and labelled as such.

Why is there no cost for Antigravity?

Because Antigravity meters quota, not money. The endpoint returns windows and the fraction of each that is used, with no price and no token count a published rate could be applied to, and an Antigravity seat is not billed at Gemini's API rates. Nothing honest can be derived, so the Cost card has no row for it rather than a $0.

Why does it send Antigravity's identity to Google?

Because the backend picks which product's licence to check from the caller's identity: the same call under a Gemini CLI identity answers an Antigravity-only account with “no valid license”. When the Antigravity markers are on this Mac, the calls carry Antigravity's user agent and client metadata so the right licence is checked. It is another client's identity, sent because the endpoint answers no other, and it is stated in docs/privacy.md rather than hidden.

Why did a meter read untouched, or 100% left, while I was working?

Google meters the quota on one of two deployments, and the other answers every bucket untouched with a reset five hours from the moment it was asked. Notchmeter prefers the host Antigravity's CLI last logged, tries both otherwise, believes the first answer with a live figure, and shows a placeholder answer with no figure and a caption saying so. A window still untouched across three polls while Antigravity's own conversation files show it at work loses its figure and says it is unverified.

Does the June 2026 change to Gemini CLI quota affect Antigravity?

That change is to what Google serves the Gemini CLI identity: since June 2026 personal accounts get a refusal there. With the Antigravity markers on this Mac the calls carry Antigravity's identity and the backend checks the Antigravity licence instead. The shutdown sentence is shown only after both hosts have refused, so the wrong host is never mistaken for a lost licence.

Install it

macOS 15 Sequoia or later, Apple silicon or Intel. Signed, notarised, and it updates itself. Free forever, MIT licensed.

# or with Homebrew brew tap Amir-Hackett/tap brew trust --cask Amir-Hackett/tap/notchmeter brew install --cask notchmeter

Notchmeter is a Mac app. There is no Windows or Linux version; if you want a Windows one, the Windows issue is where to say so. How every figure is built, with its source and its date: docs/accuracy.md.