Agent frameworks#RAG#Agent memory
Graphiti: temporal knowledge graphs for AI agents
Graphiti is Zep's open-source temporal knowledge graph: facts carry validity windows and auto-invalidate, so agents recall by meaning, relation and time.
Project facts
GitHub Ecosystem- License
- Apache-2.0
- Language
- Python
- Stars
- 31,303
- Data checked
- 2026-09-29
Snapshot figures reflect the check date and may change over time.
Most agent memory lives in a vector store that only knows “nearest by similarity” — it can’t tell what still holds. A user liked Adidas last month and switched to Nike this month; plain RAG retrieves both. Graphiti (getzep/graphiti) stores differently: facts, relations and their validity windows go into a real-time knowledge graph, where changed information invalidates old facts instead of deleting them. You can query what’s true now, or what was true on any past date. It’s the open-source core of Zep’s commercial context infrastructure, backed by the paper arXiv:2501.13956. Checked September 29: 31,303 stars.

Core features
- Facts with validity windows: every fact (an entity–relation–entity triplet) carries an effective period; when information changes, the old fact is marked invalid but kept, so any point-in-time state is queryable.
- Incremental, no batch recomputation: new data joins the graph immediately — no re-embedding sweeps like traditional RAG pipelines, which is what makes it fit for fast-changing business data.
- Hybrid three-way retrieval: semantic embeddings, keyword (BM25) and graph traversal combined, low-latency results with no LLM summarization at query time.
- Episodes and provenance: every entity and relationship traces back to the raw episodes that produced it — full lineage from derived fact to source.
- Ontology you control: entity and edge types can be prescribed upfront with Pydantic models or left to emerge from the data.
- MCP server and REST service: the repo ships
mcp_server/(episode and entity management plus hybrid search, deployed with Docker and Neo4j) and a FastAPI service, so assistants can read and write the graph over MCP.
Against GraphRAG
The README puts up a direct comparison table: GraphRAG targets static document summarization, distilling entity clusters and community summaries through sequential LLM calls; Graphiti targets dynamic data, tracking bi-temporal metadata (event time versus ingestion time) and resolving contradictions by invalidating old facts while keeping the full history, retrieved by hybrid search instead of summarization. Short version: document Q&A stays with GraphRAG; customer profiles and project states that change with the business belong in Graphiti.
Quick start
You need Python 3.10+, a graph backend — Neo4j 5.26, FalkorDB 1.1.2 or Amazon Neptune (Kuzu is deprecated) — and by default an OpenAI key for LLM inference and embeddings; the README warns that models without structured output can break ingestion:
pip install graphiti-core
To skip running a graph database entirely, use the embedded FalkorDB build pip install graphiti-core[falkordblite] (Python 3.12+). Feed conversations or business events in as episodes and the graph grows — and stays queryable — as you go.
Summary
Backend developers building customer context, long-term memory, or any system where facts change should look closely; for plain Q&A over static documents, a GraphRAG-style pipeline is less work. Apache-2.0-licensed Python, created August 2024, 31,303 stars checked September 29, maintained by the Zep team with pushes as recently as yesterday — maturity is not a concern. The honest catches: it defaults to OpenAI and is picky about structured output, so alternative models need your own validation; and you must run a graph database alongside it, which weighs more operationally than a bare vector store. Where OpenMausBot keeps memory inside each bot, Graphiti externalizes it as a standalone layer — especially useful when several agents share one session history.