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.

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.
| Figure | Source | Notes |
|---|---|---|
| The groups | POST …/v1internal:loadCodeAssist, then :retrieveUserQuotaSummary with an empty body, the answer Antigravity's own panel shows | Asked first, because its windows declare their length and need no inference. |
| The per-model buckets | POST …/v1internal:retrieveUserQuota, the fallback | A project-scoped 403 is retried with {} before it counts as a refusal: a licence is held by the user, not a project. |
| The identity | With ~/.gemini/antigravity-cli, /Applications/Antigravity.app or ~/.antigravity present: User-Agent: antigravity, a Client-Metadata naming the IDE, and ideType: ANTIGRAVITY | The 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 host | The 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 figure | The other deployment answers every bucket untouched with a reset five hours off, whatever has been used. |
| The staleness guard | A 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 unverified | Judged 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.
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.
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.