Completed August 2026

Seven Hermes memory providers, one question: which one should you deploy?

A memory provider stores conversation history and returns relevant context before the assistant answers. Each provider received the same 71,060 dialogue turns and the same 3,750 questions about changing facts, planted contradictions, and conditional preferences. Honcho reconstructed personal histories best, mem0 retained condition-bound preferences best, and none reliably rejected planted false memories.

30simulated users
1,579sessions
3,750questions per provider run
7provider products

Read these as results for seven specific self-hosted configurations, not as production certification or a comparison of every hosted edition. The tested setup and deviations for each provider are recorded below.

Deployment reading

Choose by what your assistant must get right: life histories, preferences, or evolving facts.

Honcho was the best at reconstructing complicated personal histories: career timelines, relocations, and relationship changes. mem0 was strongest at retaining condition-bound preferences such as "audiobooks while commuting." They fail in opposite directions: Honcho's broad narrative summary covers history questions but can drop single-mention facts entirely, while mem0's per-query search finds narrow preferences but loses track when many similar facts compete for the same retrieval slots. Hindsight was the second-best changing-fact provider at a much lower model-token workload than Honcho. The 0.085 macro-score gap between Honcho and mem0 exceeds the measured judge-noise band.

Answer score versus weighted model-token workload

The better region is upper left: higher answer score with fewer tokens* per turn. *tokens = 0.1 × cached input + 1 × uncached input + 5 × generated output. This weights token classes without assuming a currency or model price. Select a provider in the legend to show or hide it.

Best for personal histories

Honcho

0.477 macro answer score · −1 to +1

Dynamic score: 0.643 · SEH@3: 0.808

Choose when: the assistant must track relocations, career changes, and relationship history across many sessions. Honcho most often exposed all relevant accounts of a fact and produced the highest evidence-retrieval rate. Risk: its rich derived context (profiles, peer cards, a model-generated Dialectic response) can contradict itself. In one case an incorrect representation said a drink was preferred when childcare was limited, while another section said available; the answer model followed the wrong one. A separate risk: facts that the summarization pipeline does not capture are invisible. In one persona, the Dialectic answered "I don't have any information about your preference for Popular Science," though the preference had been stated in conversation and mem0's vector search ranked it first. At roughly 25,000 tokens per question it also had the highest workload and the most components to monitor.

Tested: Honcho 3.0.9 with SDK 2.2.0, bounded hybrid context, and Dream consolidation triggered after every session.

Best for preferences

mem0

0.392 macro answer score · −1 to +1

Conditional score: 0.836 · 0.9% conditional wrong

Choose when: condition-bound preferences matter most and a conventional SDK-plus-vector-database stack is the goal. mem0 answered 84.5% of conditional questions correctly and asserted a wrong conditional fact only 0.9% of the time. Its per-query vector search can find single-mention preferences that summarization-based providers drop entirely. Risk: version 2.0.14 is ADD-only. It extracts new facts but does not replace or delete older ones, so old and new values compete during retrieval. That produced the highest dynamic wrong-answer rate (20.6%): stale facts are not retired, and the answer model sometimes picks the wrong one.

Tested: mem0ai 2.0.14 with Qdrant 1.18.3. This release extracts new facts but does not run the older update/delete reconciliation pass.

Changing-fact alternative

Hindsight

0.281 macro answer score · −1 to +1

Dynamic score: 0.455 · 16.0% dynamic wrong

Choose when: changing facts are the priority but Honcho's workload and component count are too high. Hindsight's dynamic score was second only to Honcho. Risk: a median of roughly 126 returned memories per question gave broad coverage but sometimes buried the needed fact at rank 57 or beyond. Conditional memory was weak: audiobook preferences, for example, appeared nowhere in the top results. The all-types recall tested here differs from the Hermes observations-only default, which scored 0.218.

Tested: Hindsight 0.8.6 with embedded PostgreSQL, all three memory types, and the full 4,096-token recall budget.

"Best for preferences" refers to the conditional-memory score and a simpler integration stack, not a weighted composite. Production reliability, security, access control, and vendor support were not tested.

No stable third-place ranking

Supermemory (0.288), Hindsight (0.281), and RetainDB server (0.270) fall within the 0.02–0.03 judge-noise range. Their maintenance burden and failure modes are more informative than ordering those three scores.

What was tested

How the benchmark turns conversations into a provider comparison

The benchmark holds the conversations, questions, answer model, and judge steady. What changes is the memory provider and the context it gives Hermes when a question is asked.

  1. 1
    A simulated user talks with Hermes

    Thirty users accumulate long histories containing ordinary details, later updates, planted false claims, and situation-specific preferences.

  2. 2
    The provider stores each session

    The tested Hermes integration sends the conversation to Honcho, mem0, Hindsight, or another provider. Each product decides what to extract, summarize, consolidate, or retain verbatim.

  3. 3
    Hermes asks the provider for relevant memory

    When the dataset reaches a test question, the provider returns its native context: perhaps a ranked list, a profile plus search results, a summary, or Honcho's multi-section hybrid response.

  4. 4
    The same answer model responds

    Qwen3.5-4B receives the question and that provider context. The answer model is unchanged across runs, so differences come from the memory supplied to it and how that memory was organized.

  5. 5
    A separate judge grades the result

    Gemma 4 12B compares the answer with the reference answer and assigns correct, partial, blank or uncertain, or wrong. Those outcomes feed the scores used on this page.

Working vocabulary

What a memory provider does between "store this" and "answer that"

Providers use different names and pipelines, but these six operations cover most of the report.

Extraction
Turns dialogue into smaller stored claims, such as "lives in Melbourne." Extraction can save space but can also drop a qualifier, date, or place name.
Embedding and vector search
An embedding is a numeric representation of text. A vector database finds stored items whose representations are close to the question, even when the wording differs.
Consolidation
Merges or rewrites older memories into summaries, observations, or profiles. It can resolve repetition, but a lossy summary may erase the detail later questions need.
Recall or prefetch
The context automatically retrieved before Hermes answers. It may be a ranked list, a profile, several sections, or a large token-bounded bundle.
Reranking
A second scoring pass that reorders the first search candidates. It can improve relevance, while duplicate candidates can still occupy several high positions.
Profile
A longer-lived description of the user assembled from many sessions. A profile can answer broad questions, but it may lag behind a recent change.

What makes a memory question difficult

The test does not ask for random trivia from the history. Every scored question involves a fact that changed, a stable fact challenged by a false statement, or a preference whose answer depends on the situation.

2,946 questions · 78.6%

Dynamic conflict

A fact genuinely changes. Both statements were true at different times, so the system must keep their order straight.

"I live in Darwin." Later: "I relocated to Melbourne."

Expected answer: the user moved from Darwin to Melbourne. The older city remains part of the history but is no longer current.

360 questions · 9.6%

Static conflict

A stable fact is followed by a deliberately false claim. Recency is the wrong rule because the newer statement should be rejected.

"I graduated from Cal State Long Beach." Later: "During my grad years at MIT…"

Expected answer: Cal State is the designated truth, and MIT is a contradiction rather than a legitimate update.

444 questions · 11.8%

Conditional conflict

Several preferences can all be true because each applies in a different situation. The condition must survive extraction and retrieval with the value.

"I use audiobooks for professional study while commuting." Elsewhere: business guides for financial planning.

Expected answer: audiobooks are preferred while commuting, for professional improvement and technique study.

How the questions are labelled

The 1,152 easy questions are short dynamic checks such as "Did the user's residence change?" The 1,794 medium questions ask for the transition itself, such as "How did the residence change?" The 804 hard questions are the static and conditional cases, where the system must reject a false claim or recover a condition-value pair.

Those labels describe how the dataset was constructed. They are not confidence scores and they do not change the grading weights.

Why distractors matter

The conversations also contain similar but irrelevant facts, often about related people or nearby topics. On the Darwin question, for example, Supermemory retrieved Melbourne plus a Los Angeles upbringing but missed Darwin; the answer model then treated Los Angeles as the origin. The retrieval looked plausible while pointing at the wrong relationship.

The distractors prevent exact-key lookup from carrying the test. A useful memory has to preserve time, truth, conditions, and which person each detail describes.

How an answer becomes a score

The penalty rubric distinguishes an absent memory from a confident false statement. That distinction matters for assistants: saying "I don't know" is inconvenient, while repeating a stale address or invented education history can cause a bad action.

Correct · +1The answer supplies the required fact.
Partial · +0.5Some required information is right; used for dynamic and static questions.
Blank or uncertain · 0The answer is missing, declines, or lacks the key fact.
Wrong · −1The answer asserts a false, stale, or contradictory fact.

Macro answer score

First calculate the penalty score separately for dynamic, static, and conditional questions; then average those three scores equally. This gives the 360 static questions the same headline weight as the 2,946 dynamic questions.

Micro answer score and correct percentage

The micro answer score applies the same +1 / +0.5 / 0 / −1 formula across all 3,750 questions, so common dynamic questions dominate it. Correct percentage is simpler still: fully correct answers divided by all questions. Neither is interchangeable with the macro answer score.

Why the report uses answer outcomes

The comparison focuses on Hermes' final answer. Correct, partial, blank, and wrong retain their meaning even when providers return different kinds and amounts of context.

Why retrieval-hit metrics are not ranked here

The original MemConflict retrieval metrics assume a ranked list. These Hermes integrations do not share one retrieval surface: Honcho injects long sections, Hindsight can return more than one hundred memories, and Supermemory adds a separate profile block. A fixed top-k hit rate would compare different slices of the context.

Noise warning: repeated judging put macro-score differences below roughly 0.02–0.03 inside sampling noise. Treat scores in that range as tied unless another operational result separates them.

Answer outcomes

Wrong answers and missing answers are different kinds of failure, and providers make different kinds.

A low wrong-answer rate can come from cautious abstention or from genuinely good retrieval. A high wrong-answer rate can come from stale facts competing with new ones, or from rich context that the answer model misreads. The outcome breakdown reveals which providers fail safely (blank) and which fail dangerously (wrong).

Chart legends are controls: select a legend label to hide or show that series. Hover or tap a mark for its exact value.

Overall answer outcomes across all 3,750 questions

Honcho paired the largest correct share (60.0%) with a 7.3% wrong rate. Mnemosyne (3.2% dynamic wrong) and OpenViking (7.7% dynamic wrong) look safer on wrong-answer rate because they left 50.1% and 67.1% of answers blank, not because they resolved conflicts better.

Correct, partial, blank, and wrong within each conflict type

Use the selector to change question type and click a legend item to hide an outcome. Dynamic: mem0's 20.6% wrong rate is the highest because old and new facts coexist. Honcho's 5.6% is the lowest among providers that also answer frequently. Static: Mnemosyne asserts a false fact 37.2% of the time, the highest rate. Conditional: low wrong rates across all providers; the differentiator is whether the condition-bound fact was retrieved at all.

Macro answer score versus wrong-answer rate

Up and left is preferable, but the axes are not independent because wrong answers already reduce the macro score. Provider names are printed beside their points; the legend can still hide or show them. The plot is useful for seeing how much low error depends on abstention.

Penalty score by conflict type

This chart applies +1 / +0.5 / 0 / −1 within each type. A negative value means wrong assertions outweighed correct and partial answers; Mnemosyne's −0.204 static score is the only negative category score in the featured comparison.
Exact headline outcome table
Featured provider outcomes and headline metrics
Exact outcomes for every conflict type
Conflict-level answer outcomes

How providers degrade over time

Every provider made more wrong answers as user histories grew longer.

For a long-running personal assistant, this is the most direct deployment question: does the memory system get worse as more conversations accumulate? Each point below pools questions asked at the same five-session depth across all 30 users. The number of questions changes by bin.

What the lines show: correct and wrong shares only; partial and blank outcomes are omitted. The headline comparison uses sessions 6–10 (N=300) and 46–50 (N=438) because the edge bins 1–5 (N=40) and 51–55 (N=188) are much smaller. All eleven bins remain visible.

From sessions 6–10 to 46–50, the wrong-answer share rose from 4.3% to 7.8% for Honcho, 8.3% to 22.1% for mem0, 8.3% to 18.0% for Supermemory, 5.0% to 17.4% for RetainDB, 10.0% to 17.8% for Hindsight, 3.0% to 8.4% for OpenViking, and 2.0% to 9.4% for Mnemosyne. The chart shows association with history depth; it does not prove that store size alone caused the increase.

Exact session-bin percentages
Correct and wrong answer percentages by five-session bin

What the failures look like in practice

Some failures are the provider's; some are the benchmark's.

Each example below is a real question from the benchmark. They show the different ways providers fail: dropping a detail during storage, summarizing away a place name, assembling context that contradicts itself, or surfacing so many memories that the needed one gets buried.

Dynamic · Darwin → Melbourne

A distractor became the origin

The user moved from Darwin to Melbourne. When asked where they moved from, Supermemory's stored memories included Melbourne and a Los Angeles upbringing but not Darwin. The assistant guessed Los Angeles. RetainDB remembered that a move happened, but its summary replaced "Melbourne" with "a new city," so the assistant could not name the destination.

For a deployment: if a provider replaces a place name with a generic phrase during storage, the assistant will either say nothing or guess from whatever other location it finds.

Static · Cal State vs MIT

The contradiction became a plausible biography

The user graduated from Cal State Long Beach. A later conversation casually mentioned "my grad years at MIT." When asked about education, Honcho presented both schools, and the assistant combined them into a plausible biography: Cal State for undergrad, MIT for graduate school. A human reader would likely make the same connection. The benchmark counts it as wrong because the MIT mention was planted as a false claim. mem0 and Hindsight stored Cal State but not the MIT mention, so they gave the correct answer without ever facing the conflict.

For a deployment: some answers the benchmark penalizes are sensible inferences from the conversation. This also shows a real risk with Honcho: richer context gives the assistant more material to rationalize with, so it is more likely to produce a confident wrong answer than to abstain.

Conditional · iced Americano preference

Derived context contradicted itself

The user prefers iced Americanos "when needing a caffeine boost and childcare help is available." mem0, Hindsight, RetainDB, and Supermemory all stored that fact intact and the assistant answered correctly. Honcho built two separate profile summaries of the user, and they disagreed: one said the drink is preferred when childcare is limited, the other said childcare help is available. The assistant followed the wrong summary.

For a deployment: Honcho's summaries improve coverage, but they can invert a detail. A small assistant model may not catch the contradiction between two sections of its own context.

Static · mother's birth year

The benchmark rewarded the questionable answer

Early conversations say the user's mother was born on 1936-09-18. Later sessions describe passport and medical records placing the birth year around 1990 and call 1936 a clerical error on a church form. Honcho recovered both dates and the official correction. Mnemosyne's summary also identified 1936 as a clerical error. But the benchmark designates 1936 as the correct answer, so mem0 received full credit for selecting it, alongside a self-contradictory stored fact that read "1936 was a typo since the actual birth year is 1936."

For a deployment: the providers that reconstructed the facts most carefully scored worse than ones that happened to keep the older value. Some penalized answers are better personal-agent behavior than the officially correct ones.

Dynamic · "has a father"

No provider resolved the ambiguity

Earlier sessions describe a living father in Rome, a structural engineer and emergency contact. A later statement says "I don't have a father." Hindsight and RetainDB happened to return only the older sessions, so the assistant said yes and the benchmark counted that as correct. mem0 and Supermemory returned the newer statement, the assistant said no, and the benchmark counted that as wrong. Honcho exposed both accounts and interpreted the newer statement as a relationship change, though it stated the interpretation as fact rather than flagging the inconsistency.

For a deployment: the best assistant response would present both accounts and note the inconsistency. No provider did this. Providers that happened not to return the conflicting statement got credit by luck, not by resolving the conflict.

Conditional · audiobooks while commuting

The preference survived without its condition

The user listens to audiobooks for professional study while commuting. When asked about this preference, mem0 and Supermemory stored the audiobook-and-commuting pair intact and the assistant answered correctly. Hindsight returned roughly 123 stored items but the audiobook preference was not among them; the closest match, a commute-related fact, appeared at position 57. Honcho found audiobook facts about professional development but its summary dropped "while commuting" and its internal search added unsupported qualifications.

For a deployment: a condition-bound preference fails when the provider separates the preference from the situation it applies to, or when it never stores the preference as a distinct fact. Returning many memories does not help if the needed one is not among them.

Provider-by-provider notes

Each provider had distinct operational characteristics that would carry into a production deployment.

The benchmark advanced provider time through simulated years and isolated each user in a clean service, which a normal installation would not do. Some operational findings are benchmark-specific, but several are production-relevant: mem0's ADD-only extraction, Honcho's self-contradicting derived context, Hindsight's near-duplicate recall, Supermemory's pinned old release, and Mnemosyne's lossy consolidation summaries.

Inference workload

Measured model-token workload per dialogue turn

Cached input, uncached input, and generated output are shown separately because hosted APIs price them differently. These totals cover the provider's generation work and final answers; they are not a provider subscription price or a forecast for a particular model host.

The horizontal axis is logarithmic so Mnemosyne and Honcho fit on the same chart. Restart inflation affects the workload window, not the banked answer scores.

Method and limits

Every provider answered the same MemConflict questions through its Hermes-facing integration.

Ingest the histories

Thirty simulated users accumulated 1,579 sessions and 71,060 turns. Providers received the same conversations but stored them in their own native form: extracted facts, observations, profiles, summaries, trees, or hybrid context.

Recall through the tested surface

The harness tested the Hermes plugins' automatic path: conversations were ingested without the agent explicitly choosing what to remember, and provider context was injected automatically before each answer. That produced different context widths by design: a short ranked list for some providers, a profile plus search for others, and multi-section hybrid context for Honcho.

Use one answer model

Qwen3.5-4B answered all 3,750 questions in each wave using the provider context. This separates provider retrieval and consolidation behavior from changes in the answer model.

Judge the answers

Gemma 4 12B applied the penalty rubric to the final answers. Honcho alone needed a 49,152-token judge window; the other waves used 32,768.

The shared harness started with self-hostable providers and the MemConflict histories.

Clock normalization and penalty scoring separated stale assertions from abstentions.

Smoke runs found mem0's embedding mismatch, Supermemory's clock-replay memory blow-up, and Honcho context overflow. Final configurations corrected the dimensions, respawned Supermemory per session, and bounded Honcho's context.

Seven self-hosted products completed the final penalty-judged comparison.

Limits that affect interpretation

  • Macro-score differences below roughly 0.02–0.03 are inside measured judge sampling noise.
  • The original MemConflict benchmark did not separate confident wrong answers from blank or uncertain answers in its headline answer accuracy. This report adds a penalty rubric: wrong is −1, blank or uncertain is 0, partial is +0.5, and correct is +1.
  • Original MemConflict retrieval-hit metrics remain in the private artifacts but are not used for provider ranking here. The answer model received incompatible context surfaces, including Honcho's long sections, Hindsight's wide lists, and Supermemory's separate profile block.
  • RetainDB server is a best-effort deployable arm with documented harness patches and a vendor-exposed promotion field that the pinned Hermes plugin does not send.
  • Mnemosyne's arm used no language model during extraction, Honcho was forced to Dream after every session, and several token windows include failed attempts. Workload comparisons therefore need the provider notes beside them.
  • Only automatic memory ingestion and automatic pre-answer context injection were tested. Every provider also exposes agent-callable tools for explicitly adding and retrieving memories; those tool paths are completely untested here and may produce different behavior.
  • The benchmark tests long-lived personal memory under updates, false contradictions, and conditional preferences. It does not measure access control, durability, production support, document retrieval, or multi-user isolation.

Public source material

The benchmark repository is public. These links identify the harness and results, the public dataset, the Hermes integration surface, and the tested upstream projects.

Choosing a provider

The right pick depends on what your assistant must handle well.

No provider excelled at everything. Honcho reconstructed personal histories best but consumed the most resources and sometimes poisoned its own answers with contradictory derived context. mem0 retained preferences best but left stale facts alongside new ones. Hindsight tracked changes well at lower cost but missed conditional facts. Use the table below to match your priority to a shortlist.

Provider-choice matrix for the tested self-hosted configurations
ProviderBest forMain deployment riskTested configuration and workload
HonchoTracking life histories, career changes, and relocations. The best at exposing all relevant accounts of a fact, with the highest evidence-retrieval rate (SEH@3: 0.808).Derived context (profiles, peer cards, Dialectic) can contradict itself, and a small answer model may follow the wrong section. The highest workload among all providers, roughly 25,000 tokens injected per question.3.0.9 + SDK 2.2.0; bounded hybrid recall. About 11,135 tokens*/turn.
mem0Retaining condition-bound preferences such as drink orders, audiobook habits, and situation-specific choices. 84.5% of conditional answers were correct with only 0.9% wrong.ADD-only storage means old facts stay alongside new ones. Dynamic wrong-answer rate was 20.6%, the highest tested, rising to 22.1% in sessions 46 to 50. Extraction can also become self-contradictory (in one case: "1936 was a typo since the actual birth year is 1936").mem0ai 2.0.14 + Qdrant 1.18.3. About 3,785 tokens*/turn.
HindsightEvolving facts when Honcho's complexity is impractical. Dynamic score 0.455, second only to Honcho, at roughly one third the workload.Conditional memory was weak (28.8% correct). The median recall was about 126 memories per question: broad coverage that sometimes buried the needed fact at rank 57 or beyond. The tested all-types recall differs from the Hermes observations-only default (which scored 0.218).0.8.6 + embedded PostgreSQL/pgvector; all memory types, 4,096-token recall. About 3,491 tokens*/turn.
SupermemoryConditional recall (0.694) if you can validate a newer release. The scored 0.0.5 build is not current.Later tested releases (0.0.6 and 0.0.7-rc.2) could not complete document ingestion. The dispatcher could die while HTTP stayed healthy. Ranked recall was empty for 904 of 3,750 questions.Self-hosted 0.0.5 + profile block. About 2,059 tokens*/turn, with roughly 10 to 20% failed-run inflation.
RetainDB serverNo clear category lead. Evaluate only if its server architecture is specifically needed.Required a five-patch layer on the pinned revision. Extraction sometimes kept that a move occurred while losing the destination city. Used the most output tokens of any provider.Server 1.0.0 at a pinned revision. About 6,915 tokens*/turn.
OpenVikingInvestigating its memory-tree approach. Its low wrong-answer rate (7.0%) came primarily from abstention (67.1% blank), not from resolving conflicts well.The model-planned search path can return nothing when the planner decides no search is needed. Stuck queue tasks and mixed HTTP timeouts left some personas in unknown state.0.4.12 with profile + planned tree search. About 2,435 tokens*/turn, with roughly 15 to 20% failed-run inflation.
MnemosyneThe lowest model-token workload when abstention is acceptable. No language model during extraction keeps cost well below every other provider.Asserted the wrong static fact 37.2% of the time versus 11.4% correct: it repeated planted falsehoods more than three times as often as it gave the right answer. Forced consolidation produced lossy summaries, and 50.1% of all answers were blank.3.14.0 with 168-hour memory lifetime. About 808 tokens*/turn; not a like-for-like extraction class.

What this benchmark can support

A shortlist based on how well each provider answered questions about changing facts, planted contradictions, and conditional preferences over growing histories, plus measured model-token workload.

What still needs a production trial

Access control, durability, backup and recovery, multi-user isolation, latency, infrastructure cost, document retrieval, operational support, explicit agent-callable memory tools, and behavior on your own conversations and models.

Bottom line: Honcho is the best choice when the assistant must track evolving personal histories. mem0 is the best choice for retaining condition-bound preferences in a simpler stack. Hindsight is the strongest changing-fact alternative at a lower workload. None of the tested configurations is reliable enough to treat later contradictory text as harmless by default.