Persistent local memory for coding agents: temporal knowledge graph, procedural and episodic recall
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent — or use 1-click editor setup below.
One-click editor setup isn’t available for this listing yet — we don’t have a confirmed install command, and we’d rather show nothing than point your editor at the wrong package or host. Follow the project’s own setup instructions, linked above.
Persistent memory for your facts, decisions and working practices. Persistent, local memory for AI coding agents: Claude Code, Codex CLI, Cursor, any MCP client. Temporal knowledge graph · procedural memory · AST codebase ingest · cross-project analogy · 3D WebGL visualization.
Why this, not mem0 / Letta / Zep / Supermemory / Cognee? → docs/vs-competitors.md
Release date: 2026-09-27.
The team server grows from a token-only endpoint into something a company can run and administer. All of it is MIT, like the rest of TAM. Upgrades stay single-user; personal installs gain a settings page and stricter privacy.
| Change | How you use it |
|---|---|
| Setup wizard | tam setup asks "Just me" or "Company server"; a new team server shows a one-time setup code and a web wizard at /dashboard/. |
| Team dashboard with roles | Invite codes, passwords, member / manager / company viewer / superadmin. Provider keys are entered in the browser and stored encrypted. |
| Department onboarding | /onboard in the agent: lessons built from the team's records, quizzes, results visible to the department head. |
| PostgreSQL backend | TAM_TEAM_DATABASE_URL or Settings → Database; tam-team db-migrate moves an existing server. Same top 10 as SQLite on the parity benchmark, recall p50 485 vs 492 ms at 10k records (E5). |
| Continuous backup | TAM_TEAM_REPLICA_URL turns on Litestream replication to S3-compatible storage or a directory; restore to any moment in the retention window. |
| Offboarding | tam-team user-disable revokes every token and blocks sign-in without the user's token files; user-export and user-purge handle the personal area. Team and shared records keep their author. |
| Corrections rank above what they correct | Automatic, in English and Russian, with or without the cross-encoder ("the stand-up moved to 9:30 on Mondays" now outranks the old time). |
memory_report | Activity report for a day, week, month or custom range, with record ids for every item. |
| Settings in the browser | The local dashboard's Settings page sets the language model, embeddings, search-answer size and log retention. API keys are stored encrypted; the setup wizard no longer writes them into client configs (LOCAL_SETTINGS.md). |
| Privacy | Credentials are redacted from every write path, including the raw call log and the prompt hook. tam redact-existing cleans what older versions stored, and memory_delete(hard=true) erases a record with every copy of it. |
| Security | The local dashboard no longer sends Access-Control-Allow-Origin: *; the dashboard and the MCP HTTP transport check Host and Origin against DNS rebinding. Records that address the agent ("ignore previous instructions") are flagged in search results. |
Measured on the organisational-memory benchmark: 0 foreign-department records returned in 2,532 attack calls on SQLite and 2,544 on PostgreSQL, and 0 lost updates in 400 concurrent rounds on each. Details and every other change: CHANGELOG.
Release date: 2026-09-23.
Mem0 publishes the per-question answers behind its LoCoMo and LongMemEval figures. We graded them and TAM's answers to the same held-out questions under two grading configurations each — the judge the public numbers used and Mem0's current one. Within a configuration both systems' answers go through the same judge model and prompt; the two LongMemEval configurations differ in both judge model and rubric (report, protocol and how to reproduce it):
| Held-out questions, accuracy % | LoCoMo (1,144), published judge | LoCoMo, Mem0 judge | LongMemEval-S (400), official judge | LongMemEval-S, Mem0 judge |
|---|---|---|---|---|
| Mem0 Platform (gpt-5 answering, top 200 memories) | 88.46 | 94.32 | 91.00 | 91.75 |
| TAM (gpt-5 answering) | 86.54¹ | 94.23 | 92.25 | 90.75 |
| TAM (gpt-4.1-mini answering) | 88.02¹ | 94.32¹ | 87.50 | 88.25 |
¹ English embedding preset (MEMORY_TEXT_EMBED_MODEL=BAAI/bge-base-en-v1.5); with the default
multilingual model, 87.50 and 92.57. No difference between TAM and Mem0 Platform at the same
answering model is statistically significant on these questions. That is not a demonstrated
equivalence, and the reported split was not scored blind (the report gives the tuning history); TAM
gets there retrieving locally and calling no LLM when it writes or searches. The report also lists how Mem0's published setup differs from the
earlier public protocol: a more lenient judge, 156 re-run questions, and answer-prompt hints that
match individual LoCoMo gold answers.
What changed:
| Change | How you use it |
|---|---|
| Cross-encoder reads the neighbouring turns | Automatic. Each candidate is scored alone and with the turns before and after it; MEMORY_CROSS_RERANK_CONTEXT (400 characters, 0 = off). |
| Relative dates resolved in context mode | Automatic. "last Thursday [Thu 14 December 2023]", counted from the record's timestamp; MEMORY_CONTEXT_RESOLVE_DATES=off disables it. |
| Context budget shared by rank | Automatic. The first hits keep long records whole; answers about something the assistant said reach the reader whole for every development question instead of 38%. |
MEMORY_TEXT_EMBED_MODEL works; models above 2 GB load | Set it to change the model of ordinary records (re-embed with python src/reembed.py --fastembed). |
| Head-to-head tooling | benchmarks/crossgrade_mem0.py, benchmarks/retrieval_eval.py; the QA harnesses take reasoning models (--answer-model gpt-5-2025-08-07). |
Release date: 2026-09-22.
A record can now retire the value it replaces. memory_save(supersede=true) looks for active
records of the same project and type that share the new record's opening words and end in a
different value ("X's citizenship is Argentina" → "... is Armenia", "billing runs on PostgreSQL
16" → "18"), marks them superseded and returns their ids. It is off by default: on a real
5,128-record store the rule would have retired 138 records that were not updates, such as
"likes jazz" next to "likes rock". On MemoryAgentBench FactConsolidation with gpt-4o-mini
(findings):
| 14.3.1 | 14.4.0, supersede=true | |
|---|---|---|
| FC single-hop, 6k / 262k | 82 / 85 | 99 / 93 |
| FC multi-hop, 6k / 262k | 13 / 3 | 27 / 9 |
What changed, including two write-side costs that grew with the store:
| Change | How you use it |
|---|---|
| Fact supersession | memory_save(..., supersede=true) or memory_save_fast(..., supersede=true) for single-valued facts. The response lists retired ids under superseded. |
| Vector cache patches instead of reloading | Automatic. Migration 036 logs which record each change touched; a cached pool re-reads only those rows when a search next uses it. Unscoped recall right after a save at 1M records: 4.2 s → 0.37 s. |
| Concept name refresh uses an index | Automatic. Migration 037 indexes graph node names that can match text; the 60-second refresh that stalled one save a minute takes 2.6 ms. Save p99 at 1M records: 1,432 → 140 ms (report). |
Release date: 2026-09-21.
No reviews yet — be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/total-agent-memory)<a href="https://allmcps.com/mcp/total-agent-memory"><img src="https://allmcps.com/api/badge/total-agent-memory?style=directory" alt="Total Agent Memory on AllMCPs" /></a>