Repository navigation
Conversation
There was a problem hiding this comment.
Pull request overview
Adds Antigravity usage tracking and branding to the agents panel.
Changes:
- Adds transcript statistics and live quota collection.
- Enables Antigravity by default with branded SVG assets.
- Adds documentation and collector tests.
Tip
If you aren't ready for review, convert to a draft PR.
Click "Convert to draft" or run gh pr ready --undo.
Click "Ready for review" or run gh pr ready to reengage.
Reviewed changes
Copilot reviewed 3 out of 6 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
bin/omarchy-agent-usage-antigravity |
Implements usage collection and quota probing. |
test/shell.d/agent-usage-antigravity-scanner-test.sh |
Tests collector behavior and fallbacks. |
shell/plugins/agents/manifest.json |
Enables the provider by default. |
shell/plugins/agents/README.md |
Documents Antigravity integration. |
shell/plugins/agents/assets/antigravity.svg |
Adds the standard brand mark. |
shell/plugins/agents/assets/antigravity-light.svg |
Adds the light-surface brand mark. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
Tested on 2026-08-23 with Antigravity CLI 1.1.19 and it works for me :) I authenticated through Google OAuth on Omarchy and verified that One follow-up I found while testing is that AGY exposes two quota pools: Gemini, plus Claude/GPT-OSS. Google documents these as separate Antigravity reasoning-model groups with separate five-hour and weekly quotas: Antigravity model documentation. Displaying all four meters is accurate, but Before: The follow-up therefore shows one omarchy bar set omarchy.agents showAntigravityThirdPartyLimits true --jsonAfter: The same commit removes synthetic quota and tier data when live limits are unavailable, derives readiness from real data, names the optional pool Verification passed: 17 collector assertions, 11 panel assertions, 7 updater assertions, QML lint, and the full CLI suite. Follow-up PR against this PR's source branch: senhor-f#1 |
There was a problem hiding this comment.
Great work — this is by far the most complete Antigravity integration PR. I've been running
a local version of the same collector and hit a few of the same edges. A few notes that
might be worth addressing before merge:
remaining_fractionabsent key — silent wrong data
remaining = float(b.get("remaining_fraction", 1.0))1.0 as default means if agy omits the field (e.g. during an auth error), every bucket
silently renders as 0% used. Better to skip the bucket entirely:
remaining = b.get("remaining_fraction")
if remaining is None:
continue
remaining = float(remaining)- Offline fallback fabricates reset times from
now
The fallback in collect_limits() emits resetsAt: now + timedelta(hours=5), which will
render a countdown in the panel from the moment of the failed probe — not the real reset time.
Since no real quota data is known offline, returning [] is cleaner; the panel already hides
the LIMITS section when the list is empty.
- Small lookup table makes future window types safe
The bucket_sort_key / title derivation checks for "5h" and "weekly" inline. When Google
adds new window types the fallback lands on the full bucket name as the title
("Five Hour Limit Remaining" instead of "Session"). A small dict makes it forward-safe:
_WINDOW_TITLE = {"weekly": "Weekly", "5h": "Session", "daily": "Daily", "monthly": "Monthly"}
title_suffix = _WINDOW_TITLE.get(window.lower(), window or "Limit")
title = f"{prefix} {title_suffix}"- Unused
import re(minor lint)
re is imported but never used — will trigger ruff/flake8 in CI.
|
Tested this implementation locally on Omarchy ( The collector cleanly captures:
It renders seamlessly in the native |
|
Automated duplication check: this pull request looks similar to #8479, which covers the same Antigravity usage collector. I keep that one open and close this one to consolidate review. If you feel this is the wrong decision, please open the PR again with a note on the difference. |


PR Description
Motivation & Context
Following up on the initial Antigravity CLI integration in #6900, this PR completes the integration on the Omarchy desktop shell by adding live usage tracking, real-time rate limit monitoring, and the official vector brand asset for the Antigravity (
agy) coding agent in the agents panel (omarchy.agents).Key Changes
Antigravity Usage Collector (
bin/omarchy-agent-usage-antigravity):~/.gemini/antigravity-cli/brain/and fallbackhistory.jsonlto calculate prompt counts, active sessions, and per-model token consumption (gemini-3.7-flash,gemini-3.7-pro,claude-sonnet-4-6,claude-opus-4-6,gpt-oss-120b, etc.).agy -p /usage --output-format jsonto extract authoritative 5-hour session and 7-day weekly quota percentages and reset countdowns for Gemini and 3rd-party models.omarchy-agent-usage-updateto automatically emit~/.local/state/omarchy/agents/usage/antigravity.json.Brand Assets (
shell/plugins/agents/assets/):antigravity.svgandantigravity-light.svg).QSvgRenderer(SVG 1.2 Tiny compliance without unsupported<clipPath>definitions) with the signature Google multi-color gradient mesh.Manifest & Documentation (
shell/plugins/agents/manifest.json,README.md):antigravityin the default providers table and updates the collector documentation.Automated Test Suite (
test/shell.d/agent-usage-antigravity-scanner-test.sh):agyCLI output.history.jsonland synthetic quota buckets when the CLI is absent.Verification
./test/shell.d/agent-usage-antigravity-scanner-test.sh(12/12 passing)../test/shell.d/agent-usage-update-test.sh(7/7 passing)../test/cli(full CLI metadata & dispatch suite passing).omarchy-shell omarchy.agents openin the live Hyprland session.omarchy capture screenshot fullscreen save.