Graphiti vs Cognee: Temporal Graph or Memory Platform?
On this page, 9 sections
Graphiti is an open-source framework for building temporal context graphs, where each fact carries a validity window and you bring your own graph database. Cognee is an open-source AI memory platform with a remember, recall, improve and forget workflow, local defaults, and a relational, vector and graph store working together.
Pick Graphiti when facts change over time and you need to query what was true when. Pick Cognee when you want a memory layer that runs end to end with less assembly.
This comparison is document-based. I read both projects’ READMEs, Cognee’s architecture and recall docs, and pulled repository numbers from the GitHub API on 11 October 2026. I did not install either one or run a benchmark, so nothing below is a measured performance claim.
Where a page is silent I write “not documented” rather than assume. That matters here, because both projects change fast and several older comparisons are out of date.
The numbers, read on 11 October 2026
| Graphiti (getzep/graphiti) | Cognee (topoteretes/cognee) | |
|---|---|---|
| GitHub stars | 31,642 | 32,014 |
| Forks | 3,254 | 3,320 |
| License | Apache-2.0 | Apache-2.0 |
| Last push | 2026-10-10 | 2026-10-09 |
| Latest release | v0.30.2, 2026-09-08 | v1.6.3, 2026-10-07 |
| Open issues (GitHub count) | 469 | 635 |
| Repository created | 2024-08-08 | 2023-08-16 |
Cognee has 372 more stars than Graphiti, a gap of 1.18 percent of Graphiti’s count. I computed that in Python from the API values. That is effectively a tie, and stars measure attention, not fit.
The more useful gap is release cadence: as of 11 October, Graphiti’s latest release was 33 days old and Cognee’s was 4 days old. GitHub’s open-issue count includes pull requests, so I would not read the 469 and 635 as bug counts.
What each one says it is
Graphiti. Its README calls it a framework for building and querying temporal context graphs for AI agents. A context graph holds entities, facts (relationships between entities), episodes (the raw data a fact came from) and developer-defined types.
Each fact has a validity window: when it became true, and when, if ever, it was superseded. It is the open-source core of Zep’s context infrastructure, and the README says Graphiti is self-hosted only and needs a third-party graph database that you bring.
Cognee. Its README describes a free open-source AI memory platform that gives agents persistent long-term memory. It turns documents, code and conversations into a self-hosted knowledge graph. Four operations make up the workflow: remember stores content, recall retrieves context and answers, improve enriches memory and applies feedback, and forget removes an item or dataset.
So they are not the same shape. Graphiti is one well-defined piece, a temporal graph layer. Cognee is a broader platform that includes ingestion, storage, retrieval and a feedback loop.
How each one handles time
This is the question most people searching this comparison actually have, and it is easy to get wrong.
Graphiti makes time part of the data model. Per its README, when information changes, old facts are invalidated and not deleted, and you can query what is true now or what was true at an earlier point. Its comparison table describes explicit bi-temporal tracking with automatic fact invalidation. Treat that table as the maintainers’ own description. I did not test it.
Cognee also has time-aware retrieval, so do not describe it as having no time handling. Its recall docs list a TEMPORAL search type, and its default query router has a rule for questions that pair a time preposition with an absolute date, such as “in 2019” or “between 1910 and 1920”.
The docs say the router is rule-based, not LLM-based, and that relative dates like “last year” do not match the rule; for those you pass TEMPORAL yourself. The latest release is titled “Better Temporal Search & Retrieval Accuracy”.
What I could not find is the equivalent of Graphiti’s per-fact validity windows and automatic invalidation in the Cognee pages I read. Whether Cognee tracks when a stored fact stopped being true is not documented there. If that behaviour is central to your use case, test it directly before choosing.
Storage and setup
| Question | Graphiti README | Cognee README and docs |
|---|---|---|
| Python | 3.10 or higher | 3.10 to 3.14 |
| Graph backend | Neo4j 5.26, FalkorDB 1.1.2, Amazon Neptune (with OpenSearch Serverless for full-text search), or Kuzu 0.11.2, which is marked deprecated | Lightweight local defaults that it sets up for you; production backends can be swapped in. Postgres as a graph store is labelled a demo feature |
| LLM | Defaults to OpenAI for inference and embeddings. Works best with providers that support structured output; other providers may cause schema errors, especially smaller models | Can run without an LLM key, using a local extraction model and local embeddings that download on first use; set a key for generated answers |
| Agent access | An MCP server (episode, entity, search and group management) and a FastAPI REST service | Claude Code and Codex plugins, an MCP server, Python, TypeScript and Rust SDKs, and a REST API |
| Hosted option | Zep (separate product) | Cognee Cloud |
Two practical details from the Graphiti README. Ingestion concurrency is controlled by SEMAPHORE_LIMIT, which defaults to 10 to avoid LLM provider rate-limit errors, so if ingestion feels slow, that is the documented knob.
And Graphiti collects anonymous usage telemetry by default; the README says you can disable it with GRAPHITI_TELEMETRY_ENABLED=false. I did not find a telemetry section in the Cognee pages I read, so I will not claim either way for Cognee.
One more Cognee detail that affects a real deployment: the README says the API defaults to multi-tenant mode, and the single-user local posture needs ENABLE_BACKEND_ACCESS_CONTROL=false. If you copy the Docker command without understanding that flag, you will either hit authentication errors or turn off access control on something you meant to expose.
Which one to pick
| If this is you | Lean toward | Why, from the docs |
|---|---|---|
| Your facts change and you must answer “what was true on date X” | Graphiti | Validity windows and invalidation are core to its model |
| You already run Neo4j or FalkorDB and want to own the graph layer | Graphiti | It is built to bring your own graph database |
| You want memory working on a laptop with no API key to start | Cognee | Documented local-first path without an LLM key |
| You want one platform for ingestion, recall and feedback, including code and documents | Cognee | Remember, recall, improve and forget cover that loop |
| You want a managed option from the same vendor | Either | Zep for Graphiti, Cognee Cloud for Cognee; I did not compare them |
You are not locked in either way. Cognee’s README links a guide for importing memory from Mem0, Letta, Zep or Graphiti using an exchange format it calls COGX. I did not try that migration.
What I did not test
- Installing, running or benchmarking either project. Every behaviour above is from the project’s own documentation.
- Retrieval quality. Cognee’s README reports scores from its BEAM evaluation (0.79 at 100K tokens, 0.67 at 10M tokens), and describes the runs as using benchmark-specific formatting, prompts and retrieval configuration. Graphiti’s README includes a comparison table against GraphRAG. Neither set of numbers is comparable to the other, and I did not reproduce either.
- Cost. Both depend on LLM calls during ingestion unless you use Cognee’s no-LLM local path, and I have no token counts for either.
For the wider field, see my overview AI memory tools compared, the Cognee alternatives post, Cognee vs Supermemory, and Mem0 vs Zep vs Letta.
Questions people ask
Is Graphiti the same thing as Zep?
No. The Graphiti README says Graphiti is the open-source framework at the core of Zep’s context infrastructure, and Zep is the managed product with built-in user and thread management, its own graph engine, and enterprise features. Graphiti is self-hosted only.
Can Cognee run without an API key?
Per its README, yes for building and querying memory: with no LLM key it extracts the graph with a local model and embeds locally, then returns the matching source text without a generated answer. Generated answers need an LLM key. I did not run it, so I cannot speak to speed or quality on your hardware.
Which project is more actively maintained?
Both had a push within two days of 11 October 2026. Cognee’s most recent release was 4 days old and Graphiti’s 33 days old on that date. That is a cadence difference, not a quality judgement.
Do this today
Write down three real questions your agent must answer from memory, and mark each one as “current fact”, “fact as of a date”, or “find related documents”.
If most are the second kind, start with Graphiti and a graph database you already trust. If most are the third kind, or you want a first result with no API key, start with Cognee’s local quickstart. Run your three questions against whichever you pick before you commit.
Resources
- Graphiti on GitHub (README read 11 October 2026), and its repository data from the GitHub API, fetched 11 October 2026.
- Cognee on GitHub (README read 11 October 2026), and its repository data from the GitHub API, fetched 11 October 2026.
- Cognee docs: architecture, read 11 October 2026.
- Cognee docs: recall, read 11 October 2026.
- Zep: A Temporal Knowledge Graph Architecture, the paper the Graphiti README points to. I did not review the paper itself.