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.
"""
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/activateInstall dependencies
uv pip install -U agno google-genaiExport 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.pyFull source: cookbook/90_models/google/gemini_interactions/antigravity_environment_config.py