Skip to content

Hindsight vs Graphiti: Two Answers to the Same Question About Agent Memory

Disclosure: I work on Mnemoverse, which is in the same category as both systems described here. This page compares them, not us; our own approach appears once at the end and you can stop reading before it.

People compare these two constantly, and the comparison is usually framed as "graph or not graph". That framing is wrong, and it hides the decision that actually matters.

Both systems answer the same question, what should an agent still know tomorrow, and they answer it at different moments. Graphiti answers it at write time, by turning what happened into a temporal graph you can query. Hindsight answers it at read time, by keeping standing answers that are rewritten as the store learns more. Everything else follows from that.

What each one actually is

Graphiti (Zep, Apache-2.0, first commit August 2024, 30 320 stars as of 2026-08-26, latest tag v0.29.3 on 2026-07-27) builds a real-time knowledge graph from a stream of episodes. Its distinctive claim is explicit bi-temporal tracking with automatic fact invalidation: the graph records both when something happened and when the system learned it, and a later fact can retire an earlier one instead of sitting beside it. Retrieval is hybrid: semantic, keyword and graph traversal together.

It needs a graph database. The README lists Neo4j 5.26, FalkorDB 1.1.2, or Amazon Neptune with OpenSearch; Kuzu support is marked deprecated. That requirement is the real cost of adoption, and it is honest about it.

Hindsight (Vectorize, MIT, first commit October 2025, 21 201 stars as of 2026-08-26, latest tag v0.9.2 on 2026-08-25) describes itself as memory built so that agents learn, not merely recall. Its distinctive object is the standing question: you define a question once, the system writes the answer, stores it, and rewrites it in the background as the bank learns more. Reading that answer is a database read, with no retrieval step and no model call at read time.

It ships as a container and stores in Postgres, with Oracle listed for enterprise deployments. There is also an LLM wrapper: you swap your model client for a wrapped one and memories are written and read on every call without touching the rest of your code.

The comparison that matters

GraphitiHindsight
Where the thinking happenswrite time: episodes become a graphread time is cheap because the answer is already written; the work happens in background rewrites
Core objectnode and edge with validity intervalsstanding question with a maintained answer
Handling contradictionlater fact invalidates the earlier one, both stay auditablethe answer is rewritten as the bank learns
Retrievalhybrid: semantic, keyword, graph traversalread the stored answer, no retrieval at read time
Infrastructuregraph database requiredcontainer plus Postgres
LicenceApache-2.0MIT
Agetwo yearsten months

How to choose, honestly

Take Graphiti if your questions are not known in advance. A graph answers queries nobody wrote down beforehand: who touched this account, what changed between March and June, which decisions depend on the retired one. Bi-temporal edges are the right shape when "what was true then" and "what we knew then" are different questions, which in audit, compliance and incident work they always are.

Take Hindsight if your questions repeat. When the same twenty questions come up every session, precomputing answers turns retrieval from a per-call cost into a background cost, and read latency stops depending on the size of the store. The standing question is also a better fit when the agent must act, not report: an action needs one current answer, not a subgraph to interpret.

The infrastructure line is not a detail. A graph database is an operational commitment: a second datastore to run, back up, upgrade and staff. If you would not otherwise run Neo4j, that cost is part of the comparison, and it is why "just add a graph" is a bigger decision than it sounds.

What neither of them settles

Both leave the same question open, and it is worth naming because it will decide the category.

Who is allowed to promote something into what the agent believes. Graphiti invalidates a fact when a newer one contradicts it. Hindsight rewrites an answer as the bank learns. Neither of those is the same as a policy about authority: which observations may become standing knowledge at all, who signs for that transition, and what happens when ten low-quality sources agree with each other against one reliable one. Today that policy lives in the application, which means every team writes it again.

That is not a criticism of either project. It is the boundary both of them currently stop at, and it is where the interesting work is.

Where our own work sits

We build Mnemoverse, hosted memory reachable over MCP from several tools with one key, and our answer to the question above is that ranking should move with outcomes: a recalled memory that helped is promoted, one that misled is demoted. That is a third answer, not a better one, and it has its own hole, which is that our recall returns a ranked list with no room for the edge between two records that disagree. If you are choosing today, choose between the two systems above on the axis of this page, not on ours.