Persistent memory for your facts, decisions and working practices. Persistent, local memory for AI coding agents: Claude Code, Codex CLI, Cursor, any MCP client.
> /plugin marketplace add vbcherepanov/total-agent-memory> /plugin install total-agent-memory@vbcherepanov
Repo: vbcherepanov/total-agent-memory
What's inside
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-21.
Two problems that got worse as a store grew. Dedup treated near-identical texts as repeats, so an update that changed one value ("Messi's citizenship is Argentina" → "... Armenia", "PostgreSQL 16" → "18") was dropped and the old value kept; on MemoryAgentBench FactConsolidation 14.3.0 lost 36 of 455 facts. And several queries behind every recall and save read the whole store. Measured on one machine with 200 synthetic tenants (report):
| 14.3.0 | 14.3.1 | |
|---|---|---|
Tenant-scoped memory_recall, 100k records, p50 / p95 | 781 / 1,901 ms | 25 / 35 ms |
Tenant-scoped memory_recall, 1M records, p50 / p95 | 6–64 s | 105 / 147 ms |
| HTTP calls/s, 100k records, 16 clients | 1.3 | 37 (one process), 117 (MCP_HTTP_WORKERS=4) |
| Change | How you use it |
|---|---|
| Updates are kept | Automatic. A record is a repeat only when it has the same words in the same order (case, punctuation and ё/е aside). A repeat replaces the stored record, so "A", then "B", then "A" leaves A as the latest. |
| Scoped search follows the project, not the store | Automatic. Migration 035 puts the project into the full-text index (rebuilt once, about 30 s per million records); graph seeds and available_solutions use indexes. |
| HTTP workers | MCP_HTTP_WORKERS=4 with MCP_TRANSPORT=http: four server processes on one port, stateless sessions, POSIX only. In Docker Compose: TAM_MCP_WORKERS=4. |
| Scale benchmark | benchmarks/scale_bench.py loads a synthetic multi-tenant corpus through the real save path and measures recall, save, HTTP throughput and concurrent writers. |
| MemoryAgentBench | FactConsolidation results: findings. |
Release date: 2026-09-21.
memory_answer can now check retrieved facts for contradictions with TypeSafe's Jev, a
System One model that answers typed questions with calibrated probabilities instead of
generating text. Every (supporting, opposing) pair becomes one noul question, and all of
them go in a single request. Measured on the same questions against the Claude Haiku 4.5
scorer (report):
accuracy is unchanged within noise (LongMemEval knowledge-update 35/78 vs 36/78, control
15/50 vs 16/50). The median contradiction pass drops from 3.1 s to 1.9 s, and Jev billed
$0.038 for all 78 questions.
| Change | How you use it |
|---|---|
| Jev contradiction scorer | MEMORY_CONTRADICTION_SCORER=jev plus TYPESAFE_API_KEY. The default stays llm. The client retries 408, 429, 5xx and connection errors like the official SDKs, honours retry-after-ms / Retry-After up to 60 s, and reports jev_* counters and a jev_request_ms latency histogram. |
| API key hygiene | An empty key, or one containing a newline or other control character, is rejected before any request, and the error never contains the key. (The official Python and JS SDKs echo it; reported upstream as typesafe-sdk-python#9 and typesafe-sdk-js#14.) |
| Benchmark harness | benchmarks/knowledge_update_eval.py records per-question contradiction-pass time and Jev token usage, so the two scorers can be compared on cost as well as accuracy. |
Release date: 2026-09-21.
"Mary loves red", saved in May, and "Mary no longer likes red; she has fallen for green",
saved in August: memory_answer now says green, previously red. Measured with Claude
Haiku 4.5 on the same questions (report):
LongMemEval knowledge-update rose from 12/78 to 35/78, a Russian + English update suite from
8/30 to 22/30, and five other LongMemEval categories from 11/50 to 16/50.
| Change | How you use it |
|---|---|
| Recording dates reach the reader | memory_answer's reader and verifier see when each record was saved. The latest record about the same subject gives the current value unless its text describes the past, and a value stays current until a later record changes it. Answers come back in the language of the question. |
| Contradictions are resolved, not refused | A hard contradiction now passes both sides, with their dates, to the reader. MEMORY_CONTRADICTION_POLICY=abstain restores the 14.1.0 refusal. The contradiction scorer sees the question, so a conflict about someone else no longer blocks the answer. |
| Russian word forms | The lexical recall tier stems Cyrillic terms (Snowball, new dependency snowballstemmer): "Маша" in a question finds "Маше" in a record, and claim grounding accepts the inflected name. |
| One timestamp format | Records are stored as 2026-09-21T08:21:37.622445Z (UTC). Migration 034 rewrites older rows: +00:00 and fraction-less values are reformatted, and zone-less values, which older versions wrote in local time, are converted with that zone's DST rules. The instants do not change, so atomic facts are not rebuilt. |
Release date: 2026-09-21.
| Change | How you use it |
|---|---|
Negative retrieval in memory_answer | Before reading, the grounded reader runs a second, contradiction-seeking search: a small model inverts the question, and each (supporting, opposing) pair — at most 5 × 5 — is scored in one batched call. Score ≥ 0.60 answers Not enough information without picking a side; 0.30–0.60 answers with a caveat; below 0.30 the answer is unchanged. The verdict is returned under negative. MEMORY_NEGATIVE_RETRIEVAL=false turns it off. |
memory_answer on Anthropic and Ollama | Both providers now return schema-constrained output (forced tool call / JSON-schema format). Before this, Claude Haiku wrapped JSON in a markdown fence and memory_answer failed with Reader returned invalid grounded evidence. |
Release date: 2026-09-15 · Status: release candidate; registry publication pending. Use the prepared wheel or this source checkout for v14. The general package-manager commands below follow their published channels and do not guarantee v14 before publication.
| Change | How you use it |
|---|---|
| Personal, team and shared memory | Install one server; give Vasya and Petya separate tokens. Select a scope when saving; search all areas you can access. Each area has its own database, graph and index. |
| Authorship and revision history | The token identifies the author and client. See who changed a record, when and why; revision checks prevent overwriting another person's edit. |
| Remote MCP and team web interface | Connect an IDE through the lightweight Python bridge. In the browser, select a scope, search, browse, save, edit and inspect history. The interface displays the product name, version and release date. |
| Lower CPU pressure | Fast mode remains the default. Embedding and optional PyTorch models default to one compute thread. The team server retains three workspace workers to avoid repeated model loading. |
| Configurable internal LLMs | Use Ollama, an OpenAI-compatible endpoint or Anthropic for internal text tasks; explicitly select a vision model for images. |
| Safer retrieval and answers | Scoped context, model-aware vector search and privacy-safe write intents. The optional grounded reader checks supporting evidence and rejects contradictory claims; it is not the default answer path. |
| Installation and packaging fixes | Wheel, source archive and Docker checks cover Linux, Windows and macOS; the source archive now includes test fixtures and installation support files. |
Validation: 2,162 tests passed in the checkout; 2,145 passed from the source archive. Native wheel checks passed on Ubuntu, Windows and macOS; 12 browser scenarios passed across Chromium, Firefox and WebKit. The expanded CI matrix still requires execution. See the final verification report for skips, exact platforms and artifact hashes.
Performance limits: BGE is optional. On the measured Linux ARM64 setup, its one-thread p95 was about 2,179 ms, above the 200 ms target. Limiting threads reduces parallel CPU load; it does not eliminate CPU work. No top-10 ranking or new default answer-quality improvement is claimed. CPU measurements.
Full v14 release notes · Changelog and previous releases
| Mode | Install and use |
|---|---|
| Local, one person | Follow native or Docker installation, then Quick start. Memory and models run on your machine; the local MCP catalogue has 74 tools. |
| Server, multiple people | Follow the setup below. Memory and models run on the server; clients need only Python and their token. The remote catalogue exposes eight core tools. |
The server instructions work with the prepared v14 wheel on Linux, macOS and Windows. Run commands in a directory where you can create the data folder and token files.
Install the candidate wheel in a dedicated environment. Linux/macOS:
python3 -m venv .venv
. .venv/bin/activate
python -m pip install ./dist/total_agent_memory-14.3.1-py3-none-any.whl
Windows PowerShell, using the environment directly without changing the execution policy:
py -3 -m venv .venv
.\.venv\Scripts\python.exe -m pip install .\dist\total_agent_memory-14.3.1-py3-none-any.whl
$env:PATH = "$PWD\.venv\Scripts;$env:PATH"
Then, on any of these systems:
FAQ
total-agent-memory is a Claude Code plugin with 1 hand-picked skill for development work, indexed on Flowy. Install it with the command on its page. It includes memory-protocol. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it