🚀 Antigravity Pilot
Web UI for remotely monitoring & controlling Antigravity IDE
Quick Start · Architecture · Configuration · How It Works
English · 简体中文 · 繁體中文
Antigravity Pilot is a lightweight Web UI that connects to Antigravity IDE via Chrome DevTools Protocol (CDP). It mirrors the IDE's chat in real-time and lets you send messages, click buttons, and manage sessions — from any browser, on any device.
# Clone
git clone https://github.com/Nothing1024/antigravity-pilot.git
cd antigravity-pilot
# Install
pnpm install
# Configure
cp config.example.json config.json
# Edit config.json — set your password at minimum
# Run
pnpm devOpen http://<your-ip>:5173 in any browser (dev mode).
For production: pnpm build && pnpm start, then access http://<your-ip>:3563.
# Basic — enable CDP debug port
open -a "Antigravity" --args --remote-debugging-port=9000
# With GPU optimization (improves Antigravity rendering performance)
open -a "Antigravity" --args --disable-gpu-driver-bug-workarounds --ignore-gpu-blacklist --enable-gpu-rasterization --remote-debugging-port=9000Note (ಥ_ಥ) If the chat view sometimes freezes or stops updating, this is typically an Antigravity IDE upstream issue, not a problem with this project. Refreshing the page or restarting the IDE usually resolves it.
┌─────────────────┐ CDP / WebSocket ┌────────────────┐ HTTP / WS ┌───────────┐
│ Antigravity │◄──────────────────────────►│ @ag/server │◄────────────────────►│ Browser │
│ IDE │ Ports 9000–9003 │ Port 3563 │ │ (PWA) │
│ (Electron) │ │ (Express+WS) │ │ │
└─────────────────┘ └────────────────┘ └───────────┘
Monorepo structure (pnpm workspaces):
| Package | Role |
|---|---|
@ag/shared |
TypeScript types and WebSocket message protocol |
@ag/server |
Express backend — CDP management, snapshot loop, auto-actions, push notifications |
@ag/web |
React 19 + Vite frontend — Shadow DOM renderer, Zustand state, i18n |
Edit config.json in the project root:
These settings are configured through the Web UI's Config page:
| Setting | Description |
|---|---|
| Theme | Light / Dark / Follow System |
| Language | English / 简体中文 / 繁體中文 (auto-detected on first visit) |
| Send Mode | Enter to send / Ctrl+Enter to send |
| Auto Accept All | Auto-click "Accept all" when it appears |
| Auto Retry | Auto-click "Retry" on agent errors |
| Exponential Backoff | Retry delay: 10s → 30s → 60s → 120s |
Client settings are stored in
localStorageand synced to the server on page load. They survive server restarts.
- Discovery — Server polls CDP debug ports every 10s, looking for Antigravity workbench windows
- Snapshot Loop — Every 1s, captures the chat DOM via
Runtime.evaluate, diffs by hash, pushes changes over WebSocket - Rendering — Frontend receives HTML snapshots and patches them inside a Shadow DOM via morphdom for smooth updates
- Click Passthrough — Tappable elements map to CSS selectors; clicks are dispatched via CDP
Input.dispatchMouseEventfor reliable Electron compatibility - Auto Actions — After each snapshot, checks for target buttons and auto-clicks with configurable cooldowns
| Layer | Technology |
|---|---|
| Monorepo | pnpm workspaces |
| Language | TypeScript (strict mode) |
| Backend | Express 4 · ws 8 · web-push |
| Frontend | React 19 · Vite 6 · Zustand 5 |
| i18n | Lightweight custom (zero deps) |
| DOM Diffing | morphdom |
| Protocol | Chrome DevTools Protocol (CDP) |
| PWA | Service Worker · Web Push (VAPID) |
MIT

{ "password": "your-password", // Login password "port": 3563, // Web server port "antigravityPath": "", // Path to Antigravity executable (empty = auto-detect) "cdpPorts": [9000, 9001, 9002, 9003], // CDP ports to scan "managerUrl": "http://127.0.0.1:8045", // Optional: Antigravity-Manager URL "managerPassword": "", // Optional: Manager API key "vapidKeys": null // Auto-generated on first run }