Adding memory to Antigravity

it records every conversation and starts each one from nothing

Antigravity writes a transcript per brain — ~/.gemini/antigravity*/brain/<id>/.system_generated/logs/transcript.jsonl — and it can reopen a conversation. That is resumption, not memory: the next conversation starts from nothing, and nothing in it knows what you did in Claude Code or Codex in the same repo last week. This page is about adding that.

What Antigravity already has

The transcripts, a way back into one, and a customization surface: a directory under a customization root's plugins/ marked by plugin.json, where everything beside the marker — hooks.json, mcp_config.json, skills/, rules/ — is ingested automatically.

Adding recall

deja install antigravity-auto

Four files, all reversible with deja uninstall antigravity-auto:

  • The MCP server in ~/.gemini/config/mcp_config.json, so the model can search past sessions, read one in full, see a file's history, ask what fixed an error, or store a decision.
  • The plugin at ~/.gemini/config/plugins/deja/plugin.json as the marker and hooks.json wiring PreInvocation to deja hook-antigravity with a 10-second timeout.
  • The skill at plugins/deja/skills/deja-history/SKILL.md, which the plugin directory ingests along with the rest.
  • The launcher at ~/.config/deja/bin/deja-hook, which the hook command names instead of this build, so the wiring survives the binary moving.

Three details settled by running antigravity-cli 1.1.13 rather than by reading its docs:

  • The customization root is the same ~/.gemini/config that holds mcp_config.json. The docs also name .agents/, but a probe placed there never fired.
  • Without plugin.json the directory is not a plugin, and hooks.json beside it is ignored with no error.
  • PreInvocation is the only event whose output the model sees. PreToolUse fires but its reason never arrives, and PostToolUse has to answer with an empty object.

So one event carries both channels: the project digest on the first invocation, and the history your prompt is about on the ones after it — read out of the transcriptPath the hook is handed, because Antigravity has no per-prompt event of its own.

What arrives

An injected step before the model call: the digest once per conversation, then at most one short block when your own history answers what you just asked. Silence is the common case, and an injection is capped at 1,536 bytes per prompt and about 4 KB per tool call. What memory costs has the measured comparison.

The part that is not about Antigravity

The index covers every agent's transcripts on the machine — thirty-four of them, each in its own format — so a fix found in Claude Code answers a question asked in Antigravity, including sessions from before any of this was installed. A transcript a client later deletes stays searchable; only deja forget drops one on purpose. Nothing here writes memories, so there is nothing to hallucinate into your history; indexing and search are local, and credentials are stripped as the index is built (privacy).

Getting started · Switching between agents · The Antigravity session format

Found this useful? Star deja-vu on GitHub.