{
  "video": {
    "id": "8aVbXXvJUY4",
    "title": "An Interaction Is All You Need — Ivan Leo, Google DeepMind",
    "duration": 1024,
    "upload_date": null,
    "channel": "AI Engineer",
    "source": "AI Engineer",
    "event_format": ""
  },
  "analysis": {
    "video_id": "8aVbXXvJUY4",
    "title": "An Interaction Is All You Need — Ivan Leo, Google DeepMind",
    "one_liner": "Google's new Interactions API puts all Gemini models and agents behind one endpoint. It returns two IDs: an interaction ID that keeps context, thought signatures and cache server-side, and an environment ID that sends later calls back to the same persistent Antigravity sandbox. Together they let you build long-running, multimodal, multi-agent apps without running the infrastructure yourself.",
    "summary": "Ivan Leo (Google DeepMind developer experience) traces how we have used models: single completions, then function calling, then agents. He describes an agent as a capable model in a loop with tools, short-term and long-term memory, and an environment to execute in. He presents the Interactions API as Google's single endpoint for models and agents. It has server-side state through a previous interaction ID, strongly typed outputs, built-in tools you can mix and match, and a new 'steps' data model. He then introduces Managed Agents: the same Antigravity harness Google uses across its products, offered as a remote agent. It comes with persistent sandboxes, source loading, uploadable skills, a man-in-the-middle credential proxy, and up to a thousand frozen named agents for which you pay only model costs.",
    "key_points": [
      "Server-side state: each response returns an interaction ID, and passing it back as the previous interaction ID keeps the context. This matters for the new Gemini models because opaque 'thought signatures' have to be returned or performance drops. Startups managing them by hand were losing their cache over a single stray whitespace.",
      "Outputs are clearly separated by a strong type (output.type = audio, image, etc.) instead of deeply nested objects. Switching from audio to image generation means changing only the response modality and the generation config on the same client.interactions.create call.",
      "Built-in tools can be mixed with custom ones in a single API call. The demo combines Google Search (the same index Google uses), the URL context tool and a custom 'file incident' tool to find the latest security reports for a React app.",
      "A new 'steps' data model replaces the old outputs array with a typed discriminator. At each step it shows the model output, thought signatures, function calls and content type, to support async tool calls and models working together.",
      "Demo by Vampsy: from one photo, Nano Banana generates variations of a person in different countries, each one an interaction. The same interaction ID then feeds the new Omni Flash model to make a video. Code example: Gemini 3.1 Flash Lite Image generates 'me in Venice', and the interaction ID is passed back with the Omni Flash model.",
      "Managed Agents runs the Antigravity harness (co-trained with Gemini, and the same one behind AI Studio and the Antigravity IDE) as a remote agent with a persistent sandbox from a single API call. Returning the environment ID routes you back to the same sandbox, with installed packages and files intact. Sources can be loaded from GCS buckets, GitHub repos or inline files.",
      "A managed-agent run burned over 2 million tokens analysing a hackathon repo: a Scratch-like language for coding RL environments, with a custom DSL, a web page, schemas and an RL training loop running inside HUD. It was all done in one API call.",
      "Security: a man-in-the-middle proxy rewrites headers on outbound calls and injects tokens such as a GitHub API token dynamically, so a prompt-injected model never sees the credential. Agents can be frozen as named agents (up to 1,000), either from configured files and network sources or by iterating in chat. You pay nothing for storage or the sandbox, only for the model."
    ],
    "takeaways": [
      "Use previous interaction ID rather than replaying history by hand. That keeps thought signatures intact and avoids breaking your cache over formatting differences.",
      "Handle model outputs by switching on the typed output.type or step type rather than digging through nested response objects. This makes multimodal pipelines (image → video, audio) simple.",
      "Rather than tuning your own harness and managing a sandbox provider, consider the Antigravity managed agent. Develop and tune skills locally in the Antigravity IDE or the open-source Gemini API CLI, then upload the same folder to run identically in the cloud.",
      "Keep credentials out of the agent's reach by having the proxy inject them into outbound requests, so a prompt injection cannot leak them.",
      "When migrating to the Interactions API, give your coding agent Google's interactions API skill. It keeps current model names and methods, so the agent does not fall back to Gemini 2.5 Flash or 2.0."
    ],
    "topics": [
      "agents",
      "llm-apis",
      "state-management",
      "multimodal",
      "sandboxes",
      "tool-use",
      "agent-security",
      "gemini"
    ],
    "tools": [
      "Google DeepMind",
      "Gemini API",
      "Interactions API",
      "Managed Agents",
      "Antigravity",
      "AI Studio",
      "Gemini 3.5 Flash",
      "Gemini 3.1 Flash Lite Image",
      "Nano Banana",
      "Omni Flash",
      "Veo",
      "Deep Research agent",
      "Google Search tool",
      "URL context tool",
      "Google Cloud Storage (GCS)",
      "GitHub",
      "HUD",
      "Scratch",
      "Gemini API CLI",
      "Gemini 2.5 Flash",
      "Gemini 2.0",
      "Opus",
      "Fable",
      "React"
    ],
    "quotes": [
      {
        "text": "sometimes when we talked to different startups, we found that they would lose their cache just with a single whites space that they mistakenly added in.",
        "at": "05:48",
        "url": "https://www.youtube.com/watch?v=8aVbXXvJUY4&t=348s"
      },
      {
        "text": "if you don't give us back those thought signatures, you're going to see a decrease in performance.",
        "at": "06:16",
        "url": "https://www.youtube.com/watch?v=8aVbXXvJUY4&t=376s"
      },
      {
        "text": "even if the model is somehow prompt injected and leaks your GitHub API token, it's never actually going to see the token.",
        "at": "14:12",
        "url": "https://www.youtube.com/watch?v=8aVbXXvJUY4&t=852s"
      },
      {
        "text": "you don't pay for any of the storage. You don't pay for you don't pay for the sandbox. you only pay for the model.",
        "at": "15:15",
        "url": "https://www.youtube.com/watch?v=8aVbXXvJUY4&t=915s"
      }
    ],
    "words": 4015
  },
  "summary_url": "/#8aVbXXvJUY4",
  "transcript": {
    "html": "/transcripts/8aVbXXvJUY4.html",
    "txt": "/transcripts/8aVbXXvJUY4.txt",
    "vtt": "/transcripts/8aVbXXvJUY4.vtt"
  }
}