Aether Cache

One memory.
Entirely local.

Your tools connect through MCP. Aether Cache checks the files behind each fact and keeps the record on your machine.

Set up your project
Your machineLocal connections only
Claude Code, Cursor, and Codex connect through MCP to Aether Cache, which manages embeddings, git hashing, and file sync. The Java engine stores memories, an HNSW index, and an append-only log on disk. Everything runs on your machine. Claude Code Cursor Codex MCP Aether Cache Embeddings Git content hashing AGENTS.md / CLAUDE.md sync Java engine Memories + history HNSW vector index Append-only log → disk All on your machine: Claude Code, Cursor, and Codex connect through MCP to Aether Cache with embeddings, git hashing, and file sync; then to the Java engine with memories, an HNSW index, and an append-only log on disk. Claude Code · Cursor · Codex MCP Aether Cache Embeddings · Git content hashing AGENTS.md / CLAUDE.md sync Memory checked against your files Java engine Memories + history HNSW vector index Append-only log → disk

Local connections only. Your code and memories never leave your machine.

Every fact has a reason to stay.
And a reason to leave.

It knows when a fact expires.

Each memory is linked to its files with a git content hash. Change the file and the old memory is retired, with the reason attached.

docker-compose.yml changed
The database runs Postgres.
m1 · outdated · linked file changed

Contradictions replace. They don’t pile up.

“We migrated to MySQL” replaces “we use Postgres.” Your next session gets the current decision, instead of two competing answers.

We use Postgres.
We migrated to MySQL.
Old memory retired · replacement recorded

You can follow the whole history.

See which tool and session saved a memory, the file versions behind it, and when it was created, went stale, was confirmed, or was replaced.

m1 · Claude Code · session 01
Created → went stale → replaced by m2
File versions and reasons stay in the record.

Different tools. The same context.

A fact saved in Claude Code is available in Cursor and Codex. All three connect to the same project memory.

Claude CodeCursorCodex
recall("database setup")
The database runs MySQL 8.

Part of the repo. Private to your machine.

Sync memories into a managed section of AGENTS.md or CLAUDE.md, then commit and review them in a PR. The engine accepts only local connections; your code and memories go nowhere.

# AGENTS.md
Managed project memory
Tests need DOCKER_HOST set.
Linked to docker-compose.yml · reviewed with your code

Measured, not promised.

The engine was measured against official Redis 8. The memory layer also surfaced a useful limit: similarity is not the same as agreement.

Reported measurements for Aether Cache
What was measured Result Context
Redis throughput 88% SET, 93% GETAbout 206K / 226K ops/sec Compared with official Redis 8.
p50: 0.119 ms vs 0.111 ms.
Vector search 99.4% recall@100.84 ms per search 100K real text embeddings.
22× faster than exact search.
Crash safety 0 acknowledged writes lost0.6 s recovery 1,039,890 writes.
8 kill -9 crashes.

The contradiction looked more like a match.

Real duplicates scored 0.73–0.92 similarity. Changing an API timeout from 30 to 60 seconds scored 0.94. That’s why Aether Cache only auto-merges near-identical text and lets the AI judge whether a new fact replaces an old one.

Reported measurements, not a guarantee for every workload. Inspect the project on GitHub.

See it in your own project.

Start with a fact worth remembering.

Install Aether Cache