The Agent That Remembers

A five-tier persistent memory for Amplifier

The Problem & The Build

A brilliant colleague with permanent amnesia

Without persistent memory an Amplifier agent starts every session from zero, and you re-explain everything you already told it. amplifier-bundle-memory — originally called MemPalace, a name retired in the v2.0.0 native cutover — gives the agent a persistent five-tier memory that carries across sessions.

First question: can it actually find the right memory when it needs it?

The right memory is almost always findable

The retrieval engine hits 96.6% Recall@5 on LongMemEval — raw, with no LLM rerank. Held-out and reranked runs push it higher still.

So the substrate works. Now: how is the memory actually organized?

96.6%
R@5 — LongMemEval (raw, no LLM rerank)
98.4%
R@5 — LongMemEval (hybrid v4, held-out)
88.9%
R@10 — LoCoMo (hybrid v5, top-10)

The memory is five tiers, boot-time to background

Layered from the context loaded at startup down to silent verbatim filing during the session — each tier does one job.

One tier surfaces memories mid-session. That is where it gets hard.

Tier 0IdentityCoordination files into the system prompt
Tier 1BriefingEphemeral briefing at session:start
Tier 2InterjectionGated injection mid-session
Tier 3On-DemandArchivist multi-hop KG traversal
+Capture & CurationSilent verbatim filing, dedup at session:end

Findable isn't the same as useful

Surface every relevant memory mid-session and you flood the context window. The obvious fix — inject everything that matches — breaks the very thing it is meant to help.

Unprompted recall is a precision problem, not a volume one. So how do you engineer restraint?

Inject everything relevant, and you help nothing.
The cost of a wrong interruption is a polluted context window.

Tier 2 only speaks when it is sure

The Interject hook decides whether a memory is worth interrupting for using a single similarity gate — with a fallback judge for the uncertain middle band.

Restraint decides when to speak. The next choice keeps what it remembers accurate.

1
Cosine similarity gateInject only above threshold 0.72
2
LLM-as-judge fallbackFor the uncertain 0.62–0.72 band
3
Ephemeral system hintSurfaced mid-session, unprompted, at the right moment

Store it verbatim, never summarize it

Content is filed as-is and never compressed into a summary. The raw text is exactly what keeps retrieval sharp — no lossy summarization, no drift.

Precise gate plus verbatim storage. Now watch what that restraint actually buys.

Verbatim storage
Content is stored as-is, never summarized
Why it matters
"This is what makes retrieval accurate at 96.6% R@5" — context/instructions.md

Restraint is the feature, not a limitation

In the LongMemEval-S study the Interject hook rejected 245 candidate memories and fired just 4 times — an 8% injection rate. Yet those 4 injections lifted the LLM Judge score from 4.0% to 10.0%.

Saying nothing 92% of the time is exactly what makes the memory trustworthy.

4
Injections fired (8% rate)
245
Candidate memories rejected
4.0% → 10.0%
LLM Judge score, baseline (no memory) → with Interject
The Takeaway

Memory becomes infrastructure

Continuity arrives at session start, the right memory surfaces only when it matters, and you stop re-explaining what you already told the agent. It runs local-first — nothing leaves your machine by default via the local embedding model.

Reliable, restrained, local: memory the agent keeps so you don't have to.

Sources

Research Methodology

Active — v2.0.0 native cutover complete

Subject: michaeljabbour/amplifier-bundle-memory (tool now named "memory"; "MemPalace" was the original name, removed in the v2.0.0 native cutover, 2026-07-07).

Data as of: most recent commit 2026-07-08; independently re-verified against a live clone at /tmp/mem-primary.

Research performed:

Primary contributors: Michael J. Jabbour (46 commits, primary author); Diego Colombo (6 commits).

Gaps & care: 96.6% is the retrieval-engine R@5 metric, NOT the frequency of unprompted interjections — the Tier 2 study numbers (8% injection rate; 4.0% → 10.0% LLM Judge) are a distinct LongMemEval-S measurement and are kept separate here. The docs/research PDF was present but not read line-by-line.

More Amplifier Stories