macOS menu bar · Antigravity CLI

Antigravity’s status line, pointed at your menu bar.

Perch sits in your menu bar and watches every agy session on your Mac — running, waiting on a permission or a question, or finished — read from the status line the CLI already redraws, with the model, the context window and both of your weekly quotas. Add Perch Pro to read the conversation, reply, and stop a turn from your phone.

Get Perch — $29One-time purchase · macOS 13 or later

Antigravity CLI is what Gemini CLI became: the agy binary Google moved individual accounts to in June 2026.

The Perch panel open from the macOS menu bar, showing agent sessions with live state, model, context window and spend

How it works

Three channels, each for the thing only it can see

Scan

One database per conversation

Antigravity keeps each conversation in its own SQLite file, and two integers inside it are the state: generating, waiting on you, running a tool, done. So a session started before Perch was installed still shows up, with the right state — and this is the only channel that can see a pending question, which the status line never reports.

Status line

Perch becomes the CLI's status line

The CLI runs a command on every state change and about three times a second while it works. Perch registers its own reporter in that slot — stacked under Antigravity's own line, or chained ahead of one you already had — and reads the model, context usage, working folder, quota and whether a tool is waiting for your say-so.

Stop hook

The only honest “finished”

An Escape mid-turn and a completed turn leave the same marks on disk, so a scan alone cannot tell them apart — and chiming for a turn you cancelled would be wrong. Perch adds one Stop hook, which fires on completion and not on Escape, and that is the only thing allowed to play the sound and send the notification.

The scan stays underneath the other two. If the integration is removed, or Antigravity changes what its status line reports, sessions keep appearing with running, waiting and idle state — you lose the live refresh and the honest “finished”, not the fleet.

What lands on the row

Read from the CLI, not from a modified date

Waiting — on a permission or a question

Both kinds. A tool waiting for your approval is read live from the status line; a question the model asked is read from the conversation database, because the status line does not carry it. Either way the row, your phone and your watch say “needs you”.

Model and effort

The model the session is using and its effort level, as the CLI reports them on every refresh — not inferred from a config file that may have changed since launch.

Context window, as a percentage

How full the conversation is, from the same payload. That is the one token figure Antigravity publishes live, and it is the one Perch shows.

The project, and its branch

The agy process itself runs from the root of the filesystem, so its working folder says nothing. The status line carries the real one, and Perch shows the folder and the git branch it is on.

Done, idle, or ended — three different things

A finished turn is done and gets announced. A turn you stopped with Escape goes idle and stays quiet. A CLI that exits is marked ended within about eight seconds, verified against the live process rather than a lock file that outlives it.

Written only when something changed

The status line redraws three times a second; Perch's record is written a fraction as often. State, activity, folder and model changes land at once, a change confined to context or branch waits two seconds. Measured at a fifth of a write per second through a generating turn.

Answering

Reply and Stop from your phone. Approve, not yet.

With Perch Pro — the subscription bought in the iPhone app, not the perpetual licence — an agysession running in tmux or herdr can be typed into from your phone: a full message, line breaks and all, straight into Antigravity’s composer. Your Mac can stay locked — the text never goes through the keyboard or the screen, so nothing has to be awake to receive it.

Stop is there too, and it was measured before it was offered: sent while a long answer streamed, it aborted the turn in under a fifth of a second and left the session idle rather than falsely finished. It is withdrawn while the session is waiting on a permission, because at that prompt the same key answers “No” for you.

Why there is no Allow or Deny yet

Perch sees the permission prompt and tells you about it, on the Mac, your phone and your watch. Answering it from the phone means brokering the decision back into the CLI, and that route is built per agent and switched on only once it has been watched working. For Antigravity it has not been built.

Until then: the alert tells you it is waiting, and the answer is given at the terminal.

Usage

Two weekly quotas, the tighter one on top

Antigravity meters usage as two weekly buckets rather than a rolling window: one for Gemini models, one for Claude and GPT, each consumed in proportion to what the tokens cost. The status line reports both on every refresh, with how much is left and when each resets.

Perch shows the bucket with the least left as the headline bar and the other beneath it, with your plan tier and the reset time — on the Mac, and on your phone, watch and widget. The running-low warning fires at the same threshold it does for every other agent.

Nothing fetched, nothing stored

The figures arrive on the status line’s own input, so Perch makes no network request and reads no credential to show them.

The payload names your account. Perch keeps a fingerprint of it — enough to notice when you switch logins — and never the address.

Quota moves a few times an hour and the status line renders three times a second, so the reading is written only when it changes.

Stats

Turns and time, tokens honestly absent

Antigravity sessions count in Stats: the heatmap, streaks, session counts, turns and active time all include agyconversations, read from the CLI’s own transcripts, with an Antigravity segment in the provider picker on the Mac and iPhone. A conversation the CLI opened but you never typed into is not counted as a session.

The token totals and the model breakdown read “unavailable” for it, because the transcripts carry neither — every one on the measuring machine was checked. Perch says so rather than showing a zero that would read as a real number.

What it doesn’t do

The gaps, named

Not the legacy Gemini CLI

Perch watches agy. The retired Node-based Gemini CLI, which enterprise and API-key accounts can still run, has different hooks and transcripts and is not watched.

No Approve or Deny from the phone

The waiting state is seen and sent; the decision is not brokered back. Reply and Stop work; the approval is answered at the terminal.

No tokens or cost in Stats

The CLI stores neither. The live context percentage on the row is the one token figure it publishes; the cost field in its payload was empty in every reading taken.

No summary when a turn finishes

The Stop hook says the turn ended, and that is announced. It does not carry the closing message, so the notification has no summary line.

The default data folder only

Sessions started before Perch was installed are found by scanning Antigravity’s standard folder under ~/.gemini. A CLI pointed at a custom data directory is still recognised as a process, but its earlier conversations are not scanned.

CLI only

Perch watches the Antigravity CLI. Conversations inside the Antigravity IDE live in a different store and are not discovered.

Every one of these is a measurement rather than a plan. Where the CLI gains a way to publish a number or accept an answer, Perch follows; until then the row stays empty instead of filled with a plausible guess. OpenCode is the other end of this spectrum, if you want to see what a fully instrumented provider looks like.

Pricing

Pay once for the fleet. Subscribe for the conversation.

One licence covers every agent Perch supports, not just Antigravity — and includes the iPhone companion and all future updates.

Solo

$29one-time
  • Lifetime license — pay once, keep it
  • One Mac at a time; deactivate in-app to move
  • iOS companion, push alerts & Live Activities included
  • Notarized app with signed automatic updates
Buy Perch — $29

Team

$29per seat, one-time · 2+ seats
5
seats × $29 = $145
  • A license key for every teammate — not one shared key
  • Assign and revoke seats by email from your customer portal
  • Your seat is claimed on purchase; invite the rest by email
  • Same lifetime license and updates on every seat
  • Perch Pro is separate — each teammate who wants it subscribes in the iPhone app
Buy 5 seats — $145

Pro

Most popular
$4.99per month

or $29 a year

Launch price until 30 September, then $49 a year

  • A Mac app licence included, for as long as you subscribe — nothing separate to buy
  • Read your agents’ conversations from your iPhone, and reply straight back into the session
  • Works with your Mac locked, from anywhere your phone can reach it*
Get it on the App Store

Free to download · Pro is an in-app purchase

* What Pro can reach depends on the agent and on where its session is running. Replying needs the session inside tmux or herdr — OpenCode uses its own local port instead — and it has to be switched on in Settings, because paying for Pro is not the same as consenting to remote input. Reading a conversation works wherever the session runs. Each agent’s own page says exactly what it supports, and what it doesn’t.

Prices in USD, tax included.

FAQ

Antigravity, specifically

Is this Gemini CLI?
It is what Gemini CLI became. Google retired Gemini CLI for individual accounts in June 2026 and replaced it with Antigravity CLI — the agy binary, rewritten in Go. Perch watches agy. The legacy Gemini CLI, which enterprise and API-key users can still run, is a different program with different hooks and transcripts, and Perch does not watch that one.
Do I have to configure Antigravity?
No. Perch registers its reporter as the CLI's status line and adds one Stop hook, both in Antigravity's own settings file, both pointing at a signed helper inside the Perch app bundle. If you already run a status-line command, Perch chains ahead of it rather than replacing it. Remove Integration in Settings takes both out again, and so does the uninstall script. Sessions that were already running when you installed Perch are found by scanning the CLI's own records.
Can I approve an Antigravity permission from my phone?
Not yet. Perch can tell you an agy session is waiting on a permission, and with Perch Pro you can type to it — but answering the approval itself from your phone is not built for this agent. Watching the request and brokering the answer are different jobs, and only the first is done.
Can I reply to, or stop, an Antigravity session from my phone?
Yes, both, with Perch Pro — the subscription bought in the iPhone app, not the perpetual $29 licence. A session running inside tmux or herdr gets the composer and the Stop button on the iPhone and watch. Stop was measured before it was switched on: it aborted a streaming answer in under a fifth of a second. It is hidden while the session is waiting on a permission, because there the same key means Deny.
Why does Stats show turns but no tokens for Antigravity?
Because the CLI keeps neither token counts nor model names on disk — every transcript on the measuring machine was checked, and none carried either. So Antigravity counts toward sessions, turns, active days, active time and streaks, and the token totals and model breakdown read “unavailable” rather than zero. The iPhone shows a dash for the same reason.
What does the usage strip show?
Antigravity reports two weekly quotas on every status-line refresh — one for Gemini models, one for Claude and GPT — each with how much is left and when it resets. Perch shows the tighter one as the headline bar with the other beneath it, plus your plan tier and the usual running-low warning. Nothing is fetched from the network for this, and no account login is stored: only a fingerprint, so a switched login is noticed.
Does Perch write anything to my Antigravity data?
Two entries in Antigravity's settings file — the status-line command and the Stop hook — and nothing else. The conversation databases and transcripts are read and never written. The reporter sends Perch the session's state and metadata; your prompts, your code and the model's replies stay where they are.