Gemini Interactions - Antigravity environment configuration

Reuse an existing Antigravity sandbox by ID, or pass a full EnvironmentConfig to set sources and network rules for a new one.

Reuse an existing Antigravity sandbox by ID, or create a new one from repository sources and documented network rules.

This example uses an obsolete Antigravity EnvironmentConfig: repository sources no longer accept type="git" and url, and network.allow_internet_access is not part of the current schema. Apply the migration below before running the custom-environment agent. See Google's environment schema.

Retrieve an environment ID from a completed interaction's environment_id field. An ID must still be valid and accessible to your account; environments can expire after inactivity. See environment reuse.

antigravity_environment_config.py
"""
Gemini Interactions - Antigravity environment configuration
============================================================

Two non-default ways to control the Antigravity sandbox:

  1. Reuse an existing environment by id (faster startup, persists state
     across runs).
  2. Pass a full EnvironmentConfig dict to declare sources, network rules,
     or other sandbox knobs.

Use a reused environment when the agent needs to build on prior work in the
same sandbox (e.g. an iterative project). Use a custom EnvironmentConfig
when you need a specific source repo, package set, or network policy.
"""

from agno.agent import Agent
from agno.models.google import GeminiInteractions

# ---------------------------------------------------------------------------
# Option 1: Reuse an existing environment by id
# ---------------------------------------------------------------------------
# Replace "env_xxxxxxxx" with the id of a sandbox the API has already
# provisioned for you (e.g. returned from a prior interaction).

agent_reuse = Agent(
    model=GeminiInteractions(
        agent="antigravity-preview-05-2026",
        environment="env_xxxxxxxx",
    ),
    markdown=True,
)

# ---------------------------------------------------------------------------
# Option 2: Full EnvironmentConfig (custom sources / network rules)
# ---------------------------------------------------------------------------
# The dict shape mirrors the API's EnvironmentConfig. Only the keys you set
# are sent; the API applies sensible defaults for the rest.

agent_custom = Agent(
    model=GeminiInteractions(
        agent="antigravity-preview-05-2026",
        environment={
            "type": "remote",
            "sources": [
                {"type": "git", "url": "https://github.com/agno-agi/agno"},
            ],
            "network": {"allow_internet_access": True},
        },
    ),
    markdown=True,
)

if __name__ == "__main__":
    agent_reuse.print_response(
        "Continue the project we started last time and ship the next "
        "iteration of the report."
    )

    agent_custom.print_response(
        "Skim the repo we cloned, summarize the module layout, and save "
        "the summary to STRUCTURE.md inside the sandbox."
    )

Run the Example

Set up your virtual environment

uv venv --python 3.12
source .venv/bin/activate

Install dependencies

uv pip install -U agno google-genai

Export your Google API key

export GOOGLE_API_KEY="your_google_api_key_here"

Configure or skip environment reuse

Before running, replace env_xxxxxxxx in agent_reuse with the ID of an existing environment. To run only the custom path, comment out the agent_reuse.print_response(...) block instead.

Update the environment configuration

Replace the environment dictionary in agent_custom with {'type': 'remote', 'sources': [{'type': 'repository', 'source': 'https://github.com/agno-agi/agno', 'target': '/workspace/agno'}]}. Unrestricted outbound network access is the default.

Run the example

Save the code above as antigravity_environment_config.py, then run:

python antigravity_environment_config.py

Full source: cookbook/90_models/google/gemini_interactions/antigravity_environment_config.py