Feature comparison and integration boundaries

View source on GitHub

This comparison covers the desktop addon, provider proxy, web dashboard, and remote provider connection. It compares source behavior at the revisions below, not features inferred from repository names or screenshots. Mobile clients, hosted cloud agents, and a remote computer-control daemon are separate products.

Audited revisions and licensing

Reference Pinned revision Source license Integration approach
12errh/antigravity-proxy 457d0490ffdca79cce99b4c0acfb059aa83426b9 MIT Adapt routing, provider, dashboard, history, context, and utility components into the optional gateway; retain upstream notices.
Aminetwiti/antigravity-patch-proxy-remote 6cab300c4250621536d0bf048a17f69043587068 (v3.7.3) Apache-2.0 Source comparison informed independently implemented IDE settings/lifecycle, direct diagnostics and pool policy. No vendor bundle, OAuth credentials, remote daemon or Doctor app is copied.

Relevant remote-reference source includes src/proxy/modelLoader.ts, src/proxy.ts, src/services/googleAuth.ts, ag-doctor-ui/src/services/googleOAuthServer.ts, and its account-discovery services. These show that OAuth, quota, and account pooling are desktop proxy features independent of the repository’s Go remote daemon. The Go /v2 workspace/session/terminal APIs and mobile clients are a separate runtime.

Desktop model and request features

Feature found in the references Integrated behavior Implementation / boundary
Multiple providers and models Available Shared provider catalog, model store, Settings editor.
Provider groups and enable/disable Available Models group by provider and endpoint; group and individual enable actions preserve saved credentials. Storage remains a flat model list.
Provider-level shared defaults Import and discovery supported Provider-group imports inherit defaults; discovered models copy settings. Later model edits are independent; this is not a live shared provider-credential object.
Edit, duplicate, rename, delete Available Main-process updates preserve masked credentials; duplicate uses the source model’s saved secret.
Provider model discovery Available Live model catalogs with search, filtered bulk selection, available capability/limit metadata, and provider-specific pagination. See provider setup.
Local server discovery Available on request Common ports for Ollama, LM Studio, llama.cpp, vLLM, LocalAI, TabbyAPI, Text Generation WebUI, LiteLLM, and Aphrodite. No background network scan.
JSON/base64 import and export Available Flat arrays, models, and provider-group inputs; export removes API keys, custom headers, and Google tokens/client secrets. Import validates before writing.
OpenAI, Anthropic, Gemini protocol Available Explicit apiFormat selects translation independently from preset branding; old entries retain their historical format when no override exists.
Provider presets including local and custom services Available Catalog covers the desktop presets; actual model availability is discovered or configured, not promised by static examples.
Raw endpoint, custom headers, extra JSON fields Available Advanced settings expose rawUrl, customHeaders, extraBody; headers are encrypted and removed from export. extraBody is ordinary configuration and should not contain secrets.
Reasoning/thinking, output/context limits, vision Available Explicit model overrides; support depends on protocol/model. Context limits cannot enlarge the provider’s actual context window.
Retries, fallback chain, circuit breaker Available One request owner applies retry/fallback rules, respects cancellation, and does not retry after output is delivered. Disabled and duplicate fallback entries are skipped.
Streaming/tool compatibility and empty/idle protection Available Request-scoped translator state, fragmented SSE handling, empty-stream checks, idle timeout, and tool argument validation.
Health/usage diagnostics Available across two components Direct proxy has a Diagnostics dialog with up to 200 measured request records, latency and actual provider token usage; gateway dashboard has persistent history and cost estimates. Missing measurements remain unknown.
Modern Settings reinjection Available Works with the Models & Usage content container and legacy Models/MCP anchor; handles pane replacement without a URL change. Vendor preload APIs are preserved.
Doctor diagnostics and repair CLI plus request diagnostics UI Read-only npm run doctor, installer preflight, transactional repair/restore, and a Diagnostics dialog in the existing UI. Installation checks remain CLI; the separate Doctor Electron application is not bundled.
Real model generation test Available on explicit action A short, bounded request uses the production translator and reports generated-text success. Separate from the non-generating connection/catalog test; can consume quota.
Recent models / effort presets Available in model management Successful real requests determine recent ordering; optional low/medium/high variants are ordinary saved models with stable identities. No automatic tripling of the provider catalog.
Native picker IDs for large catalogs Persistent allocation Share authoritative IDs between proxy, desktop and browser manager. The inspected IDE schema has 651 placeholder values; native reservations and retained deleted-model assignments reduce free slots. Overflow keeps direct API aliases available.

See customPreload.ts, modelManagement.ts, modelStore.ts, and customRequest.ts.

Google account management

Reference feature Integrated behavior Difference or requirement
Browser OAuth sign-in Available on explicit action User supplies their own Google Desktop OAuth client. No OAuth client ID/secret copied from the reference is bundled. PKCE, state, temporary random loopback port, cancellation, and timeout are implemented.
Account JSON import / editing Available Import your own authorized_user JSON or account arrays. No automatic extraction of browser, IDE, or gcloud credentials.
Secure persistence and masked UI Available OAuth results remain in main-process memory until model save; unsaved pending entries expire after 10 minutes. Saved credentials use OS safeStorage or local AES-256-GCM.
Access-token refresh Available Refreshes as needed; concurrent refreshes share the same pending operation; updated credentials can persist encrypted.
Multiple account selection Available Round robin, least loaded, quota, or adaptive P2C using measured header latency, load, failures and fresh quota; affinity, concurrency and authentication state remain enforced.
Structured quota/rate-limit governor Available Honor Retry-After and typed Google retry/reset metadata; model-specific cooldown and conservative fresh-all-buckets-zero eligibility. No invented five-hour reset or paid-tier quota assumptions.
Quota retrieval / display Available on request Test account retrieves a quota snapshot, and Pool status displays it. The reference’s periodic three-minute quota polling is not enabled; quota is refreshed explicitly.
Service/project eligibility Provider-controlled OAuth success alone does not grant Cloud Code access or quota. Supply an eligible account/project where required; region and entitlement failures remain visible.

See googleOAuth.ts, googleAccounts.ts, and the Google account workflow.

Optional gateway and web dashboard

The gateway is an independently started Node process. It receives native Gemini JSON or SSE requests from the desktop addon, translates/routes them upstream, and stores its own history. It requires Node.js 22.13 or newer for built-in SQLite.

Feature from 12errh/antigravity-proxy Integration
Provider priorities and model/provider fallback mapping Retained in the dashboard and routing configuration.
Custom provider endpoints and live model discovery Retained; keys and endpoints belong to the gateway’s local profile.
OpenAI chat, Anthropic messages, Gemini, OpenCode Zen/Go protocols Retained provider adapters; OpenCode Responses routing is available in the gateway.
Local model service discovery Retained, explicitly initiated.
Reasoning settings and model context windows Retained and editable.
Context strip/lite modes and LLM compaction Retained, opt-in. Compaction performs an additional provider request; context passes through unchanged by default.
Request history, search, replay, sessions Retained using SQLite; prompts, responses, and tool arguments are stored. Delete requests/sessions from the dashboard when appropriate.
Usage, charts, pricing overrides Retained; charts are bundled for offline use. Token/cost totals are estimates, and bundled price/model tables can become stale.
Blocklists, rate limits, failover webhooks Retained; configure them explicitly in the dashboard.
Dashboard configuration reload Retained after saving; listener address/port changes require restart.
Setup, status, logs, start/stop lifecycle Added a scoped CLI for the optional gateway; it manages its own process only.
OS TLS interception / custom certificate / hosts edits Not used. The desktop’s existing addon sends directly to the gateway HTTP interface. No global certificate or DNS change is required.
Launching or force-stopping Antigravity Not used. Gateway lifecycle does not control the vendor application.

The gateway requires an access token for models/generation and separate dashboard login. Both listeners bind to loopback by default. A tunnel or explicitly enabled network listener provides remote provider access; HTTP network listeners need a trusted encrypted transport when traffic leaves a trusted local network. See gateway/README.md for exact commands, endpoints, and configuration, and gateway/UPSTREAM.md for attribution.

Remote and platform boundaries

Capability Status
Connect desktop custom models to a remote gateway Available: save URL/token/dashboard URL, authenticate, import aliases, open dashboard.
Use gateway from another HTTP client Available through authenticated native Gemini generation/model APIs.
Web request-history sessions Available in the gateway; these represent provider requests.
Go remote daemon workspaces, terminal, filesystem, live agent sessions / MCP relay Outside this integration; those /v2 APIs are not implemented by the gateway.
Mobile/Flutter clients and hosted cloud-agent scheduling Outside this desktop/proxy/web/remote-provider scope.
Existing standalone app WSL bridge Preserved from the installed vendor runtime. Custom-model routing still applies only to local desktop sessions; it does not reroute the vendor’s WSL language server.
Separate VS Code-based Antigravity IDE Verified IDE 2.5.5 / VS Code 1.107.0 hidden core endpoint support, reversible settings adapter, owned service and browser manager. Live Windows sign-in, native picker selection and streamed chat passed with a local OpenAI-compatible provider. See IDE validation.
Recovery after supported desktop updates Version-specific preflight, backups, validated hooks, and rollback; unfamiliar runtime layouts fail before replacement.

The transport choice is deliberate: preserving the installed desktop runtime avoids replacing newer WSL, certificate, updater, and host-bridge behavior with older source snapshots. See compatibility and recovery.

Source gaps and remaining differences

The v3.7.3 source contains scripts/update-ide-setting.js, which sets jetski.cloudCodeUrl. Its README also describes automatic out/main.js bootstrap and dual conversation database reconciliation, but their referenced ag-doctor/ implementation is absent at this revision. This project supplies its own managed launcher; it does not claim the missing bootstrap or perform speculative database deletion. src/proxy/protoInjector.ts supports a GetUserStatus picker hook in the reference, but the available source does not establish a working IDE installation path for that hook. The IDE 2.5.5 source instead builds its native picker from fetchAvailableModels, sort/group entries and internal unified-state updates. Our adapter follows that catalog path and does not inject the older RPC hook. The Windows and Linux artifacts were verified and inspected; the Windows IDE completed live Google sign-in, showed the configured model and effort variants in its native picker, and displayed a streamed response from a local OpenAI-compatible provider through the proxy.

Remaining reference feature Boundary
Full Doctor installation GUI, log viewer and batch generation test Installation checks remain CLI; our UI provides measured requests and individual generation tests.
Configurable chat prompt pills Not injected into unknown IDE/workbench chat DOM. Existing drafts and vendor chat controls are left intact.
Separate Gemini CLI identity / AI Studio key pool Existing Gemini API-key models and explicit Google Cloud Code accounts remain distinct. No bundled OAuth clients or automatic credential extraction.
Automatic quota polling, disk quota/retry history and adaptive retry-budget persistence Quota refresh is explicit; routing telemetry is process-local. Existing bounded retries and circuit breakers remain available.
Lost thought-signature recovery Existing Google passthrough preserves supplied signatures; no speculative signature cache is added without a reproduced loss case.
Encrypted/password configuration exchange Reference utility functions have no verified application caller; our export deliberately excludes credentials.

The reference Doctor’s historical fallbacks include estimated tokens from step counts and default speed/account/latency values (ag-doctor-ui/src/main.ts and renderer/traffic-inspector.ts). Those are not treated as real measurements here. The reference’s “BPE” helper is heuristic; our context estimates remain labelled as approximate. These differences are intentional and are not claims of complete product parity.

Verification

npm run build
npm run gateway:install
npm run gateway:build
npm test
npm run gateway:test
npm run test:integration

DOM fixtures verify grouping, edit/duplicate/enable flows, masked secrets, discovery, export/import, gateway actions, account controls, OAuth cancellation, and reinjection. OAuth tests drive the loopback callback with an injected token exchange to check PKCE/state, rejection, timeout, and cleanup. Provider/gateway tests use local HTTP fixtures for streaming, retries, fallback, authentication, history, and lifecycle. Installer tests use copied fixtures rather than changing the live installation.

These tests do not establish paid-provider access, real Google account entitlement, or compatibility with every future desktop release. Such checks require the intended user credentials and installed runtime. Static catalog entries are configurable defaults, not a statement that a provider/model is currently available.