Coding agents
Antigravity
Give Antigravity memory that survives the session. Antigravity can't attach a static API-key header to a remote MCP server on its own, so it reaches Korely through a small local bridge that does it for you.
Antigravity forgets everything between sessions. Connect Korely's MCP server and it doesn't: before answering, Antigravity can pull the active typed facts and relevant memories it has stored, and write new ones as it learns. The intelligence, entity and typed-fact extraction, contradiction resolution, bi-temporal validity, runs server-side. Antigravity just calls the tools.
Prerequisites
- A Korely API key (
kor_live_...). The hobby tier is free. - Antigravity installed, with MCP support (Manage MCP Servers in the IDE).
- Node.js with
npxon yourPATH, the bridge runs as a Node process.
Why a bridge
Korely's agent memory is a remote MCP server at
https://api.korely.ai/agent/mcp, authenticated with your key in
an Authorization: Bearer header. Antigravity's MCP client does
not yet attach that header to a remote (serverUrl) server, the
configured header is silently dropped and the initialize request
goes out without your token, so the connection 401s
(antigravity-cli #25).
Antigravity also doesn't implement MCP OAuth. What it does spawn
reliably is a local stdio command server
(antigravity-cli #60).
So Korely connects through one: a tiny local proxy speaks stdio to
Antigravity and forwards to Korely over HTTP, adding the header for you.
Add the Korely MCP server
Open your Antigravity MCP config and register Korely as a local
command server that runs mcp-remote. On macOS and
Linux the IDE config lives at
~/.gemini/antigravity/mcp_config.json; on Windows it's
C:\Users\<USERNAME>\.gemini\antigravity\mcp_config.json.
In the IDE you can open the live file via
Manage MCP Servers → View raw config.
{ "mcpServers": { "korely": { "command": "npx", "args": [ "-y", "mcp-remote", "https://api.korely.ai/agent/mcp", "--header", "Authorization: Bearer kor_live_..." ] } }}
Replace kor_live_... with your real key.
mcp-remote speaks stdio to Antigravity and forwards each call to
https://api.korely.ai/agent/mcp over Streamable HTTP, injecting
the Authorization header, the one Antigravity won't send on its
own. Restart Antigravity (or reload MCP servers) and korely
should show as connected.
If a newer Antigravity build is installed (v1.20.x+), it expands
${VAR_NAME} in the config, so you can keep the key
out of the file by writing
Authorization: Bearer ${KORELY_API_KEY} and
exporting KORELY_API_KEY in the shell that launches Antigravity.
About the bridge. mcp-remote is a
third-party, open-source npm proxy (geelen/mcp-remote, the
de-facto community bridge for remote MCP servers), it is not published or
maintained by Korely or Google. It needs Node.js on your machine and runs
locally as a command server. With static-header auth no OAuth
is involved, so nothing is cached or logged in by it.
If a server doesn't load
Antigravity reads its MCP config from more than one place across surfaces. If
korely doesn't appear:
-
Try the shared config at
~/.gemini/config/mcp_config.json(read by Antigravity 2.0 / the shared IDE+CLI setup), or use the IDE's View raw config to open whichever file is actually live. -
Put the server in the HOME-level config, not a
workspace-local
mcp_config.json, project-local configs are currently read but ignored (antigravity-cli #60). -
Confirm
npxresolves in the environment Antigravity launches from, the bridge is a Node process.
What Antigravity can do
Once connected, Antigravity has four memory tools:
| Tool | What it does |
|---|---|
korely_get_context | The recall path: assembles the active typed facts plus the most relevant memories into a prompt-ready block. Pure retrieval, no model runs on the read path. |
korely_add | Store a memory. Typed (subject, predicate, object) facts are extracted server-side and contradictions are superseded automatically. |
korely_search | Semantic search over stored memories, ranked. |
korely_get_facts | The typed bi-temporal facts known about a user, with point-in-time (as_of) queries. |
Use it
Now Antigravity reaches for memory on its own. Tell it something durable and
it calls korely_add; ask it something personal and it calls
korely_get_context first:
You › Remember that this repo deploys to Hetzner, not Render. → korely_add("This repo deploys to Hetzner, not Render")
# next session, days laterYou › How do we deploy this? → korely_get_context("deploy") → "This repo deploys to Hetzner..."Antigravity › This repo deploys to Hetzner (you told me earlier), not Render. ...Scoping
Every tool accepts an optional user_id so one key can serve many
end users, a memory written for "user-a" never surfaces for
"user-b". Omit it and everything is scoped to the key's default.
When Antigravity adds header auth
The day Antigravity attaches headers to remote servers (#25), you can drop the bridge and point at Korely directly:
{ "mcpServers": { "korely": { "serverUrl": "https://api.korely.ai/agent/mcp", "headers": { "Authorization": "Bearer kor_live_..." } } }}
This serverUrl form is not functional today,
Antigravity drops the header, but it's the one-line change for when the fix
lands. Until then, the mcp-remote bridge above is the working
setup.
Why this is more than a notepad. Korely doesn't store raw
chat logs, it extracts typed facts with bi-temporal
validity. When something changes ("we moved off Render"), the old fact is
superseded, not duplicated, so korely_get_context returns
what's true now, and as_of can still replay what was
true before. EU-hosted.
Related
- Korely MCP, the full MCP surface and other clients.
- Get context, the call behind
korely_get_context. - Memory as a tool, the same pattern when you build the agent loop yourself.