Skip to content

feat(antigravity): add Antigravity extension host and Auxiliary Pane sidecar - #91

Open
baveku wants to merge 1 commit into
callstackincubator:mainfrom
baveku:feat/antigravity-extension
Open

baveku wants to merge 1 commit into
callstackincubator:mainfrom
baveku:feat/antigravity-extension

Conversation

@baveku

@baveku baveku commented Nov 6, 2026 •

Copy link
Copy Markdown

Summary

Add Google Antigravity (apps/antigravity) as a plugin and UI extension host, rendering Mobile Dev in the Antigravity Auxiliary Pane (SIDECAR_UI_ENTRYPOINT_AUX_PANE) and sharing the session with the mobile-dev MCP server.

apps/antigravity/
├── .antigravity-plugin/plugin.json         # Antigravity plugin manifest
├── mcp_config.json                         # MCP server launch entry
├── hooks.json                              # SessionStart Node >= 22.19 check
├── plugin-host.json                        # Host build, marketplace, and 5 MiB file limit config
├── server/
│   ├── index.ts                            # Entry split for bundle size limit
│   └── server.ts                           # Shared stdio server + browserPanel + agentDeviceTools
├── sidecars/
│   ├── device-panel/sidecar.json           # Aux Pane Web UI sidecar declaration
│   └── launch.mjs                          # Token-authenticated reverse proxy to the active browser panel
├── skills/mobile-dev/                      # Antigravity Mobile Dev skill (including App Intelligence)
├── test/
│   ├── publish-release.test.ts             # Release branch marketplace publishing tests
│   └── sidecar-launch.test.ts              # Sidecar session lifecycle & beacon cleanup tests
└── tooling/
    ├── build.mjs                           # Server and host page bundle build
    └── publish-release.mjs                 # Publishes release/antigravity branch
sequenceDiagram
    participant IDE as Antigravity Aux Pane
    participant Sidecar as sidecars/launch.mjs
    participant Server as dist/server.mjs (MCP + Panel)
    IDE->>Sidecar: GET /?token=<ANTIGRAVITY_SIDECAR_UI_TOKEN>
    Sidecar->>Server: Proxy /, /mcp, /context (with x-sidecar-token)
    Server-->>Sidecar: Streamable HTTP MCP + Panel HTML
    IDE->>Sidecar: GET /api/status & POST /api/close-session
    Sidecar-->>IDE: Live chat-to-sidecar target sync & single-session lifecycle
Loading

Key changes:

  • apps/antigravity: Add plugin manifest, MCP config, SessionStart hook, Auxiliary Pane sidecar (device-panel), sidecar reverse proxy (launch.mjs) with /api/status live target/tool sync, single-session replacement + /api/close-session beacon cleanup, bounded background keep-alive, [Mobile Dev](sidecar://mobile-dev/device-panel/) toggle pill instructions, App Intelligence skill coverage, build script, and release/antigravity publisher.
  • .github/workflows/release.yml & README.md: Package, smoke-test (npm run test:antigravity), and publish release/antigravity alongside codex and claude on release tags, and document Antigravity installation.
  • packages/core/src/browser-panel.ts: Add optional onPage callback and instructions formatter to BrowserPanelOptions so a host can record the active loopback panel URL and customize opening instructions.
  • packages/core/src/panel-runtime.ts & packages/core/src/physical-ios-bezel.ts: Support PLUGIN_DATA alongside CLAUDE_PLUGIN_DATA for the downloaded panel runtime directory and resolve baguette/Baguette via panelRuntimePath when bundled.
  • packages/mcp-app/src/browser-panel.ts: Forward token as x-sidecar-token, sync live tool/target updates from /api/status in sidecar mode, re-check immediately on window focus/visibilitychange, send /api/close-session beacon on pagehide so device streams/collectors stop immediately when the pane closes, and auto-recover with a Reload button on disconnect/expiry.
  • tooling/smoke-plugin.mjs: Support hosts declaring mcpConfig, hooks, and data in plugin-host.json.

Evidence

  • Before: Antigravity had no native apps/antigravity host package, Auxiliary Pane sidecar integration, or release/antigravity release pipeline.
  • After: Unit tests (including sidecar session replacement and beacon teardown), telemetry typecheck, commitlint, release branch publishing tests, and agy plugin validate --strict pass; the extension installs from release/antigravity and renders the live device panel, logs, App Intelligence, and performance profiler in the Antigravity Auxiliary Pane.
✔ publishing puts the Antigravity extension beside its marketplace on release/antigravity
✔ only a release build matching its tag is published
✔ sidecar proxy replaces superseded sessions and closes sessions on beacon
✔ browserPanel notifies onPage on startup and when a panel tool runs, with custom instructions
✔ the host's plugin data folder holds the runtime when it provides one
✔ commitlint --last (0 problems, 0 warnings)
✔ tsc --noEmit (typecheck:telemetry)
✔ agy plugin validate --strict

Merge Danger

Door: Two-way

All Antigravity-specific files live in apps/antigravity, and changes in packages/core, packages/mcp-app, .github/workflows/release.yml, and tooling/smoke-plugin.mjs are additive and backward-compatible with existing Codex, Claude, Cursor, and Mac hosts.

Blast Radius: Low

Existing hosts keep their default behavior when onPage, instructions, PLUGIN_DATA, and ?token= are unset.

@vercel

vercel Bot commented Nov 6, 2026

Copy link
Copy Markdown

@baveku is attempting to deploy a commit to the Margelo Team on Vercel.

A member of the Team first needs to authorize it.

@baveku
baveku force-pushed the feat/antigravity-extension branch 2 times, most recently from 430b18b to 4cd0dbf Compare November 10, 2026 03:49
@baveku
baveku force-pushed the feat/antigravity-extension branch from 4cd0dbf to 0745bb3 Compare November 10, 2026 16:19

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant