Skip to main content

codex-agy-bridge

CI License: MIT

Run Antigravity from an agent harness as durable, parallel, human-operable agy sessions over MCP.

codex-agy-bridge wraps the official Antigravity CLI with a resumable MCP control plane. Agent harnesses like Codex, Claude Desktop, or your own GPT/Claude-powered MCP client can start agy runs, wait on sparse events, attach a real terminal, send guarded input, cancel safely, continue exact conversations, and collect final results later by run_id.

Quick Install

Prerequisites:

  • Codex CLI for the command below, or another local stdio MCP-capable harness
  • The official Antigravity CLI (agy), already authenticated locally
  • uv / uvx
  • tmux and a supported terminal launcher:
# macOS
brew install tmux

# Debian/Ubuntu Linux (x-terminal-emulator is also supported)
sudo apt install tmux gnome-terminal

Check the required commands:

codex --version
agy --version
agy models
uvx --version
tmux -V

Day 0 Authentication

agy --version only proves the binary exists. Before adding the MCP server, run agy models; if Antigravity asks you to sign in or reports that you are not logged in, start a visible session and complete the browser/login flow:

agy --prompt-interactive "Authenticate Antigravity and then exit."
agy models

After agy models succeeds, install or restart the MCP server. If a bridge run still hits auth, agy_run_start returns status="auth_required" and opens a visible agy authentication session by default. Complete sign-in there, then start a fresh run. You can also use agy_run_observe(view="terminal") or agy_admin(action="doctor") to inspect the auth-required status.

Install from PyPI with the Codex CLI:

codex mcp add codex-agy-bridge \
  --env AGY_CMD="$(command -v agy)" \
  -- "$(command -v uvx)" codex-agy-bridge@latest

Restart the harness, then verify in Codex if you used the command above:

codex mcp get codex-agy-bridge
codex mcp list

Remove it with:

codex mcp remove codex-agy-bridge

For Claude Desktop or a custom MCP client, use the same stdio command shape: uvx codex-agy-bridge@latest with AGY_CMD set to the authenticated agy executable.

What Makes It Different

  • Parallel Antigravity sessions: launch multiple independent agy runs, each with its own durable state, logs, transcript projection, and result.
  • Human-operable terminals: foreground runs live in persistent tmux sessions, so Terminal.app can attach without killing the agent.
  • Resumable MCP control: MCP calls can time out, the harness can restart, and the run can still be observed later by run_id.
  • Goal orchestration: create a goal, start named targets with bounded parallelism, and inspect the whole batch as one coordinated effort.
  • Sparse wake events: agy_run_wait short-polls lifecycle, attention, progress, and terminal events without transcript-polling spam.
  • Guarded input: agy_run_input can reject stale writes when event or transcript cursors changed after the caller observed the run.
  • Trajectory-aware observability: bounded transcript summaries and terminal evidence are exposed without private model reasoning.
  • Operational hygiene: duplicate active starts are deduplicated, process groups are cancelled safely, and completed result artifacts are preserved.

Install Details

If You Are An Agent Reading This

Help the user install it; do not silently mutate their machine.

  1. Verify prerequisites first:
command -v codex
command -v agy
command -v uvx
command -v tmux
agy --version
agy models
  1. If anything is missing, ask before installing it.
  2. If agy models reports an auth error, help the user complete the Day 0 authentication flow above before adding the MCP server.
  3. Then run:
codex mcp add codex-agy-bridge \
  --env AGY_CMD="$(command -v agy)" \
  -- "$(command -v uvx)" codex-agy-bridge@latest
  1. Verify:
codex mcp get codex-agy-bridge
codex mcp list
  1. Tell the user to restart their agent harness so the new MCP tools load.

PyPI

The Quick Install command stores an stdio MCP server definition. When the agent harness starts the server, uvx resolves codex-agy-bridge@latest from PyPI, installs it into an isolated cached environment, and runs the codex-agy-bridge console script. AGY_CMD pins the bridge to the user's already-installed and authenticated agy executable.

Do not replace $ or $(...) manually in the command. In POSIX shells, $(command -v agy) and $(command -v uvx) expand to absolute executable paths.

GitHub

Use this when you want the repository version directly:

codex mcp add codex-agy-bridge \
  --env AGY_CMD="$(command -v agy)" \
  -- uvx --from git+https://github.com/varadfromeast/codex-agy-bridge \
  codex-agy-bridge

Local Development

git clone https://github.com/varadfromeast/codex-agy-bridge.git
cd codex-agy-bridge
uv sync --extra dev

codex mcp add codex-agy-bridge \
  --env AGY_CMD="$(command -v agy)" \
  -- uv --directory "$PWD" run codex-agy-bridge

How It Works

flowchart LR
  H["Agent harness<br/>(Codex, Claude, custom MCP client)"]
  M["codex-agy-bridge<br/>MCP stdio server"]
  S["Durable control plane<br/>runs, goals, events, results"]
  W["Detached run supervisor"]
  A["Antigravity CLI<br/>agy"]
  T["Persistent tmux session<br/>human attach/input"]
  L["Local Antigravity<br/>trajectory files"]

  H <-->|"MCP tools"| M
  M <--> S
  S --> W
  W --> A
  W <--> T
  A --> L
  W -->|"bounded transcript projection"| S
  T -->|"terminal logs and attention prompts"| S

The bridge keeps the MCP server responsive while detached supervisors own the long-running agy processes. State and events are persisted locally, so a run can continue after the original MCP call returns. For the deeper process model, see docs/ARCHITECTURE.md. For the MCP control-loop vision, see docs/MCP_VISION.md.

MCP Tools

Tool Purpose
agy_run_start Start, continue, or open an interactive foreground run
agy_run_wait Short-poll until selected runs emit sparse wake events
agy_run_observe Read full, status, transcript, or raw terminal views
agy_run_input Send input with optional event/transcript preconditions
agy_run_cancel Cancel one active run
agy_run_result Read final result metadata or bounded result chunks
agy_goal Create goals, start targets, and read aggregate status
agy_admin Read diagnostics, models, plugins, validation, and changelog

Omit model (or pass null) to let Agy choose its default: the bridge stores model: null and does not send --model. This applies to runs, review tools, and goals, whose targets inherit their goal's selection. Explicit selections are validated against agy models, including the bridge's former Gemini 3.5 Flash (Medium) default; unknown and empty selections are rejected. The bridge never substitutes the first catalog entry. agy_admin(action="models") reports default_model: null and default_model_source: "agy_cli"; this describes delegation, not an observed effective provider model.

Existing persisted runs and goals retain their model strings and remain readable. They are not silently migrated to a different model. New launches from an old goal revalidate its selection and reject it if it is no longer available; create a new goal with an available model or omit the selection to delegate to Agy. Previously reserved runs retain their original command policy. New delegated requests have distinct deduplication keys from explicitly selected models. Older bridge versions that require a string goal model cannot read new null-model goals; avoid downgrading with those goals in use.

Typical flow:

agy_run_start -> agy_run_wait -> agy_run_observe -> agy_run_result

In Codex MCP, tools may be exposed with the server prefix, for example codex_agy_bridge_agy_run_wait. Run responses include exact wait_call arguments; note that agy_run_wait always takes run_ids: ["..."], even for a single run. Supported wait conditions are any_attention, any_terminal, all_terminal, any_event, and aliases attention, terminal, finished, finish, complete, completed, result, all_finished, all_complete, and all_completed.

Use agy_goal when the harness should split work into named targets with a shared objective and bounded parallelism.

Configuration

Variable Default Purpose
AGY_CMD agy on PATH Exact Antigravity executable
AGY_BRIDGE_STATE_DIR ~/.local/state/codex-agy-bridge Durable run and goal state
AGY_BRIDGE_AGY_ROOT ~/.gemini/antigravity-cli Antigravity conversations and trajectories
AGY_BRIDGE_MAX_PARALLEL 50 Global concurrent-run limit
AGY_BRIDGE_COMPLETION_STABILITY_SECONDS 150 Time a final marker must remain stable
AGY_BRIDGE_MCP_WAIT_SLICE_SECONDS 120 Max seconds a single agy_run_wait MCP call blocks before returning a snapshot so gateways do not time out

Run state survives MCP server restarts under ~/.local/state/codex-agy-bridge/.

Status And Risk

This project is experimental. It currently targets Python 3.11+, macOS or Linux with a supported terminal launcher, tmux, and Antigravity CLI 1.0.8-compatible commands and trajectory files.

Antigravity is an agentic CLI. It can read and write files, execute commands, and access the network with the current user's privileges. This bridge is not a sandbox or security boundary.

The bridge always enables Antigravity's dangerous permission-skip policy so unattended runs do not stall on CLI approval prompts. Any dangerously_skip_permissions=false input is rejected; the only allowed value is true. sandbox=true and additional_directories are CLI policy hints, not filesystem containment.

The bridge does not read or copy Antigravity OAuth credentials. It invokes the installed agy binary and reads ordinary local conversation metadata and trajectory files.

Development

git clone https://github.com/varadfromeast/codex-agy-bridge.git
cd codex-agy-bridge
uv sync --extra dev
uv run pytest
uv run ruff check .
uv build

Run the server directly:

uv run codex-agy-bridge

The server uses stdio transport. Do not print diagnostic text to stdout; it would corrupt MCP framing.

Publishing

A pushed version tag runs .github/workflows/publish.yml, which verifies versions, runs checks, builds distributions, publishes to PyPI through GitHub OIDC, creates a GitHub release, and publishes server.json to the MCP Registry.

Compatibility

The current reader expects Antigravity trajectory JSONL under:

~/.gemini/antigravity-cli/brain/<conversation-id>/
  .system_generated/logs/transcript.jsonl

If Antigravity moves to SQLite or a local daemon API, a new adapter can replace this reader without changing the MCP tool contract.

License

MIT

Metadata

Release files for codex-agy-bridge 0.1.12

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for codex-agy-bridge 0.1.12
File Size Uploaded Provenance Actions
codex_agy_bridge-0.1.12.tar.gz 82.4 kB With provenance Details for codex_agy_bridge-0.1.12.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for codex-agy-bridge 0.1.12
File Interpreter ABI Platform Actions
codex_agy_bridge-0.1.12-py3-none-any.whl Python 3 none any Details for codex_agy_bridge-0.1.12-py3-none-any.whl

Total release size: 184.9 kB

Release files / codex_agy_bridge-0.1.12.tar.gz

Download URL codex_agy_bridge-0.1.12.tar.gz
Size 82.4 kB
Tags Source
SHA-256 checksum
How to use checksums
029ea40ba94d7ff3a1fb033950874e8904bb4a31ff6d5f9336f662326abf7fb8
BLAKE2b-256 checksum
How to use checksums
67cf524a204920a5ae6b4115f472ebbf6ea26018b129b90e66a0dd4fd7daf678
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release files / codex_agy_bridge-0.1.12-py3-none-any.whl

Download URL codex_agy_bridge-0.1.12-py3-none-any.whl
Size 102.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
dee15d62c6e4826aea434693da7c452f734eade0c8219d6d5c66b5516d789ec0
BLAKE2b-256 checksum
How to use checksums
1d6e8c5c4be9332e21f35d4af766453946c1936b7459534847e3550fc416a842
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Security for codex-agy-bridge 0.1.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for codex_agy_bridge-0.1.12.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page