Skip to content

Google ADK

The Agent Development Kit builds agents from tools. Make one of those tools a sandbox and any code the model writes runs in a disposable Linux environment rather than in your process.

Setup

bash
pip install ovrin google-adk
export OVRIN_API_KEY="ovrin_..."
export GOOGLE_API_KEY="..."

A sandbox as a tool

python
import ovrin
from google.adk.agents import Agent

client = ovrin.Client()  # reads OVRIN_API_KEY


def run_python(code: str) -> dict:
    """Execute Python in an isolated sandbox and return its output.

    Args:
        code: The Python source to run.
    """
    sandbox = client.sandboxes.create(template="python", timeout=300)
    try:
        result = sandbox.run(f"python -c {code!r}", timeout=120)
        return {"stdout": result.stdout, "stderr": result.stderr}
    finally:
        sandbox.kill()


agent = Agent(
    name="analyst",
    model="gemini-2.0-flash",
    instruction="Write and run Python to answer questions. Always verify by executing.",
    tools=[run_python],
)

ADK reads the docstring and type hints to build the tool schema, so the signature above is the contract the model sees.

Shell access too

Nothing restricts the tool to Python — the sandbox is a whole machine:

python
def run_shell(command: str) -> str:
    """Run a shell command in an isolated sandbox.

    Args:
        command: The command to run.
    """
    sandbox = client.sandboxes.create(template="ubuntu", timeout=300)
    try:
        return sandbox.run(command, timeout=120).stdout
    finally:
        sandbox.kill()

Cost control

Every tool call creates billable compute. Keep timeout tight, kill in a finally, and watch concurrency against your plan's limit — see Plans & billing.