Multi-account Google Antigravity CLI quota monitoring & telemetry engine - isolated containers & centralized API
π¬π§ English Β· πΈπ¦ Ψ§ΩΨΉΨ±Ψ¨ΩΨ©
- What is GravWatch?
- Why GravWatch Exists
- Screenshots
- Highlights
- Status
- Quick Start
- Commands
- Clients Ecosystem
- Architecture
- Documentation
- Contributing
- License
GravWatch is a lightweight, distributed telemetry and quota aggregation engine built specifically for the Google Antigravity CLI (agy). It runs multiple isolated Google accounts concurrently inside minimal headless Docker containers (debian:bookworm-slim, capped at ~256MB RAM per container) to completely eliminate OAuth session conflicts.
Each containerized agent periodically parses quota metrics for Gemini Flash, Gemini Pro, Claude Sonnet, Claude Opus, and GPT OSS, and streams telemetry to a central FastAPI hub, calculating pooled capacity across all developer accounts in real time.
| Problem | Standard Workarounds | GravWatch |
|---|---|---|
| OAuth Session Collisions | β Switching accounts locally overwrites tokens | β
Strict process & volume isolation per container (./data/acc-X) |
| Resource Overhead | β Heavy VMs consuming 4GB+ RAM | β Ultra-light Debian slim containers (256MB RAM & 0.25 vCPU cap) |
| Fragmented Visibility | β Checking quotas one by one in terminal | β Unified pooled capacity across all active developer accounts |
| Model Tracking Limits | β Manual estimation of model quotas | β Automated parsing for Gemini Flash, Gemini Pro, Claude Sonnet, Claude Opus, and GPT OSS |
| Zero Maintenance | β Complex setups requiring desktop GUIs | β Headless terminal-first daemon running in background |
- π Zero Token Collisions: True multi-account isolation with persistent Docker volume mounts for arbitrary
$N$ accounts. - β‘ Minimal Footprint: Strict memory limits (
256MB RAM) and CPU caps (0.25 vCPU) per container node. - π€ Smart Telemetry Parser: Resilient parser tracking Gemini Flash, Gemini Pro, Claude Sonnet, Claude Opus, and GPT OSS.
- π Aggregated Quota Pool: Calculates pooled requests, limits, and combined utilization percentage across all accounts.
- π REST API Hub: FastAPI async backend providing real-time telemetry endpoints and interactive Swagger docs.
# Clone the repository
git clone https://github.com/shadow-x78/grav-watch.git ~/GravWatch
cd ~/GravWatch
# Configure environment and dependencies (Python + Web client)
./scripts/setup-dev-env.sh
# Interactive OAuth account pairing assistant
./scripts/setup-auth.sh
# Start the multi-account stack (Server + Web + Agents)
docker compose -f packaging/docker/docker-compose.yml up -d
# Or run the Web Dashboard locally:
npm --prefix clients/web run dev- Web Dashboard: http://localhost:3000
- API Swagger Documentation: http://localhost:8000/docs
- Live Pooled Telemetry: http://localhost:8000/api/v1/usage/latest
- Health Check: http://localhost:8000/api/v1/health
| Command | Description |
|---|---|
./scripts/setup-dev-env.sh |
Set up Python development environment, web client dependencies, and data directories |
./scripts/setup-auth.sh |
Interactive Google OAuth account pairing assistant |
npm --prefix clients/web run dev |
Start the Next.js Web Dashboard locally (Port 3000) |
docker compose -f packaging/docker/docker-compose.yml up -d |
Build and start all containers (Server, Web UI, and Agents) via Docker Compose |
docker compose -f packaging/docker/docker-compose.yml ps |
Check container statuses |
docker compose -f packaging/docker/docker-compose.yml logs -f |
Stream container logs in real time |
docker compose -f packaging/docker/docker-compose.yml down |
Stop all running containers |
./scripts/uninstall.sh |
Clean removal of containers, volumes, and temporary caches |
python3 -m unittest discover -s tests -v |
Run all unit and integration test suites |
docker compose -f packaging/docker/docker-compose.yml logs -f serverA modern, rich browser dashboard built with Next.js 16 + Tailwind CSS v4 + TypeScript + Recharts + Lucide visualizing live telemetry metrics, account states, twin-tier quota gauges (Weekly & 5-Hour limits), and bilingual (English/Arabic) UI support.
A native Material 3 + Jetpack Compose companion app for Android tablets and smartphones, connecting directly to the GravWatch API hub with quick glance widgets and status cards.
grav-watch/
βββ services/
β βββ server/ # FastAPI hub, database, models, engine, and routes
β β βββ api/ # route handlers (health, usage, accounts)
β β βββ core/ # config, database engine, security
β β βββ engine/ # pool aggregator and math engine
β β βββ models/ # database tables and Pydantic schemas
β β βββ main.py # minimal application entrypoint
β βββ agent/ # container daemon and quota scrapers
β βββ collector/ # CLI command runner and ANSI table parser
β βββ core/ # agent configuration
β βββ mock/ # 5-model mock telemetry generator
β βββ agent.py # autonomous scraping daemon
βββ clients/
β βββ web/ # upcoming browser telemetry dashboard
β βββ android/ # upcoming native Material 3 Compose app
βββ packaging/
β βββ docker/ # Docker Compose, Dockerfiles, entrypoint.sh
βββ data/ # brand vector and raster identities
βββ docs/ # complete bilingual documentation
βββ scripts/ # setup, auth, and uninstall scripts
βββ tests/ # unit and integration test suites
βββ .github/ # CI workflows, templates, dependabot
βββ .editorconfig, .gitignore, .gitattributes
βββ .env.example # master environment template
βββ pyproject.toml # PEP 621 package metadata
βββ README.md, README_AR.md, CONTRIBUTING.md, CHANGELOG.md, SECURITY.md, LICENSE
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β gravwatch-server (FastAPI async hub, port 8000) β
β ββββββββββββββββ ββββββββββββββββ βββββββββββββββββββββ β
β β models/ β β core/ β β engine/ β β
β β tables & pyd β β config & db β β pool aggregator β β
β ββββββββββββββββ ββββββββββββββββ βββββββββββββββββββββ β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β api/ (Central REST API Engine: /usage, /latest) β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β² β² β² β²
β β β β
ββββββββ΄βββββββ ββββββββ΄βββββββ ββββββββ΄βββββββ ββββββββ΄βββββββ
β container-01β β container-02β β container-03β β container-N β
β acc-1 β β acc-2 β β acc-3 β β acc-N β
β agy agent β β agy agent β β agy agent β β agy agent β
βββββββββββββββ βββββββββββββββ βββββββββββββββ βββββββββββββββ
| Document | Description |
|---|---|
| docs/ARCHITECTURE.md Β· AR | System topology, telemetry ingestion & multi-account container isolation |
| docs/INSTALL.md Β· AR | Multi-account container setup, OAuth pairing & quick start |
| docs/PACKAGING.md Β· AR | Container specifications, resource quotas & volume isolation |
| docs/API_SPEC.md Β· AR | REST API endpoints, JSON payloads & model contracts |
| docs/TROUBLESHOOTING.md Β· AR | Auth tokens recovery, network diagnostics & container issues |
| SECURITY.md | Security model, token isolation & vulnerability reporting |
| CHANGELOG.md | Full release history |
| CONTRIBUTING.md | Guidelines for contributing and code conventions |
Please read our Contributing Guidelines for details on how to set up the development environment, format your code, and submit Pull Requests.
When committing, follow the convention:
grav-watch | <scope>: <message>
For example:
grav-watch | parser | regex: support gpt oss table layout
grav-watch | docs | readme: clarify OAuth token persistence
grav-watch | v2.0.0 | release: major production release
Distributed under the GPL-3.0 License.
Built by shadow-x78 & mohmed-hegaze Β· Changelog Β· Security
Β© 2026 GravWatch


