Mohamed Ashraf Elsaed

What aletheia-mem gives you, and what it does not

By Mohamed Ashraf ElsaedPublished 8 min read

Aletheia (npm package aletheia-mem) is a free, local memory and rules hub for AI coding tools. This post lists what it gives you, with the numbers behind each claim, and then lists what it does not give you, because the second list matters as much as the first.

Aletheia logo: a network shaped like a brain, with a stack of memory layers inside

The problem

Every coding agent forgets between sessions, and each one remembers differently. You explain the repository, the deploy rule and the odd naming convention on Monday, and on Tuesday the agent asks again. Switch from one tool to another and the memory does not follow you. Aletheia keeps the memory and the rules once, on your machine, and lets each tool read them in the format it already understands.

Benefit 1: one store that many tools read

One SQLite file is read over MCP (standard input and HTTP), a REST API and a command line. Thirteen MCP tools cover search, timeline, full text by id, saving a memory, rules and a work-state list. Automatic capture through hooks is built for six tools and exercised end to end against recorded payloads. What has run on a real install is narrower, and the limits section below says exactly how.

The Aletheia Home page for a demo project: what Aletheia knows, listed newest first, and the rules that apply
The Home page for a demo project. Everything shown is stored in one local file.

Benefit 2: private by default

Nothing leaves your machine unless you start it: a model provider you configure, sync with a hub you run, an export you share, an alert webhook, or the one-time download of the optional embedding model. Two honest cautions: redaction is pattern based, so it is not complete, and the database is plain SQLite with no encryption at rest, so use disk encryption if you need it.

Benefit 3: rules written once

A rule is a standing instruction for every tool. You write it once, and a preview-first command writes it into each tool’s own file: CLAUDE.md, AGENTS.md, GEMINI.md, Cursor and Windsurf rules, Copilot and Aider files. Those writers were tested in temporary folders. No real tool has read a rules file that Aletheia wrote, and the Copilot and Aider writers have not been verified.

Benefit 4: memory you can read, correct and take away

The Knowledge tab lets you search, edit, pin, hide and export. Dismiss hides a memory without deleting it, restore brings it back, and facts keep their history, so a query can ask what was true on a given date. If a note is wrong after a rewrite, you remove it from every future session in one click.

Benefit 5: a small, predictable start for each session

The session-start block is an index with one line per memory, cut at 6,000 characters. An agent that needs more calls search, timeline and get_observations. Aletheia estimates the cost in tokens as characters divided by four and says so on the last line of the block. The estimate is not a saving claim: in a tiny demo store the block was larger than the text of the memories it listed (about 194 tokens against about 132), and a real saving needs memories with long narratives.

Benefit 6: retrieval that is measured, with a published method

I measured retrieval on LoCoMo: the questions of categories 1 to 4 that have gold evidence, 1,536 questions over 10 conversations. Recall@5 is the share of a question’s gold evidence turns found in the top five results, averaged over questions. It is retrieval only. Every number below was measured by me, with the commands in docs/project/benchmarks.md.

Bar chart of Recall at 5 on 1,536 LoCoMo questions: claude-mem 36.0 percent from its README, Aletheia keyword search 55.3, hybrid on raw turns 57.4, hybrid with its own facts 57.7, with the dataset's facts 64.8, with dataset facts and rerank 72.3
Recall@5, retrieval only. The hybrid rows need the optional embeddings package. The rows with the dataset's own facts use facts written by the benchmark's authors, not facts that Aletheia extracted.
Run Recall@5 MRR ms per query
claude-mem 15.2.0, raw turns, from its README 36.0% 0.285 p50 1,699 ms, p95 2,824 ms (idle, 40 queries)
Aletheia, raw turns, keyword search (BM25, the default) 55.3% 0.482 2.00
Aletheia, raw turns, hybrid 57.4% 0.497 3.72
Aletheia hybrid + its own rule-extracted facts 57.7% 0.492 4.94
Aletheia hybrid + the dataset’s facts 64.8% 0.591 5.53
Aletheia hybrid + the dataset’s facts + rerank 72.3% 0.680 646.19

Read it carefully.

At 50,000 synthetic rows, keyword search p95 was 32.7 ms project-scoped and 58.6 ms across all projects (Linux, bun bench/scale.mjs 50000 20000 --index tuned --queries 200 --seed 1).

What it does not give you

When it is worth using

It fits if you use more than one coding tool, want your memory in a file you can read and move, or cannot send session text to a hosted service. If one tool’s built-in memory already covers you, you may not need another layer. If you need hosted team sharing with accounts, Aletheia’s team mode is self-hosted and partial.

To try it in ten minutes in a throwaway folder, follow the how-to post for aletheia-mem.

What I checked, and what I did not

The numbers come from the README, docs/project/benchmarks.md and the result files in bench/results/2026-10-26, which I read on 2026-10-31. The commands for the Aletheia rows are public, so anyone can repeat them. The claude-mem row has no result file, only the README. The token figures come from a run of aletheia context with aletheia-mem 0.1.10 in a throwaway folder on 2026-10-30. I did not rerun the LoCoMo benchmark for this post, and I did not measure claude-mem again.

What I would do differently

  1. Publish an answer-accuracy result before the retrieval table. A script exists, but no result from a real model is published, and readers hear “accuracy” when they see a percentage.
  2. Measure both sides the same way. I mix an in-process mean and an HTTP median because that is what each run reported. I would rerun both over HTTP with one statistic, and commit the raw output, so the speed difference needs no footnote.

Sources

This post was drafted with AI assistance. I reviewed every claim and ran the commands shown.

About the project: Aletheia.

Mohamed Ashraf Elsaed
Mohamed Ashraf Elsaed
Technical Lead at Convertedin, Cairo. I build tools for AI coding agents and write about Laravel, Node and engineering.