Graphiti
Track how facts change over time, maintain provenance to source data, and support both prescribed and learned ontology. Every derived fact traces back to its episode, and every edge carries valid_at and invalid_at.
Graphiti, from Zep, is a framework for temporal knowledge graphs on a database you bring. Its strongest feature is one Okto Neuron does not have: facts with validity windows you can query at a point in time. Okto Neuron's is one Graphiti does not have: every claim points at a byte range and a content hash in a Markdown file you own. This page keeps both true.
Graphiti, the open-source framework behind Zep, builds a knowledge graph from episodes, with edges that record when a fact was valid, on Neo4j, FalkorDB, Kuzu or Amazon Neptune. Okto Neuron builds a graph from a folder of Markdown notes and traces every claim to the bytes it came from.
Pick Graphiti if you need point-in-time questions, a Python framework to build on, or a managed service through Zep.
Pick Okto Neuron if your source of truth is Markdown you write, and you want each claim cited to a byte range and content hash in that file.
Graphiti ingests episodes (messages, JSON, text), extracts entities and facts with an LLM, and stores them with time bounds in Neo4j, FalkorDB, Neptune or Kuzu. Okto Neuron ingests Markdown blocks, mints claims, and stores them in an embedded graph that is derived from the vault and can be thrown away and rebuilt.
Track how facts change over time, maintain provenance to source data, and support both prescribed and learned ontology. Every derived fact traces back to its episode, and every edge carries valid_at and invalid_at.
The graph is derived from your Markdown vault and can be rebuilt from it. ask returns text with a synthesis_status, and with include_sources=true, the vault-relative path, byte range and content hash of every source block.
Competitor cells paraphrase the Graphiti README, MCP README, edges.py, help docs and the Zep pricing page. Okto Neuron cells were checked against the 0.3.0 source on 2026-09-26 (storage backends, supersession fields, loopback runtime probing, telemetry extra, MCP surface).
| Dimension | Graphiti | Okto Neuron |
|---|---|---|
| Where data lives | Your graph database, self-hosted. Zep is the fully managed or in-your-cloud version with a proprietary engine | Markdown vault on your disk; the graph is derived from it. Nothing is hosted |
| Storage | Bring your own: Neo4j 5.26, FalkorDB 1.1.2 (also as embedded FalkorDB Lite), Amazon Neptune with OpenSearch Serverless, or Kuzu (deprecated). The MCP server defaults to FalkorDB | Okto Grafx by default (embedded). Ladybug selectable. Neo4j selectable with the neo4j extra, which the installer does not add. The graph is derived and can be regenerated from the files |
| Agent access | Python library plus an MCP server described as an experimental implementation, 13 tools (add_memory, add_triplet, search_nodes, search_memory_facts, and more). Clients listed: Claude Desktop (via mcp-remote), Cursor, VS Code with Copilot | MCP with five tools over a bearer-authenticated port; REST and UI on loopback. The installer wires Claude Code |
| Provenance unit | The episode. Edges carry episodes, fact and reference_time; entities get MENTIONS edges. No byte range or content hash found | A block: vault-relative path, byte_start, byte_end and a sha256 content_hash, returned with include_sources=true on ask |
| Temporal model | Bi-temporal edges: created_at, valid_at, invalid_at, expired_at. Old facts are invalidated, not deleted. Query what is true now or at any point in time | Ingest-time supersession bounded to the document being edited: valid_until on the old claim, a supersedes edge from the new one, after an LLM correction judge confirms the change. No point-in-time query. The correction judge does not sweep the whole vault |
| Extraction | LLM, OpenAI by default; Anthropic, Gemini, Groq, and OpenAI-compatible local servers (Ollama, vLLM, llama.cpp, LM Studio). Works best with structured output; small models can fail extraction | LLM curation at ingest against an OpenAI-compatible endpoint, loopback runtimes probed first. Synthesis on ask reports synthesis_status |
| License | Apache 2.0 | Elastic License 2.0 from 0.3.0 (source-available). Releases up to 0.2.0 stay Apache 2.0 |
| Hosted option | Zep: free tier with 10,000 credits per month, Flex at $125/month, Flex Plus at $375/month, Enterprise custom. SOC 2, HIPAA, BYOC | None |
| Telemetry | Anonymous, on by default, opt out with GRAPHITI_TELEMETRY_ENABLED=false; never collects content | No analytics or telemetry dependency in the shipped package |
| Benchmarks | Zep publishes LoCoMo and LongMemEval results for its platform (getzep.com/research); no figures for Graphiti alone were found in its README | LoCoMo categories 1-4 from our own harness and judge, on the benchmarks page. Left out of this table on purpose: a different judge, scope and harness mean the numbers do not compare with self-reported figures |
| Maturity | Established framework with a commercial managed service behind it | Prerelease 0.3.0. The upgrade from 0.2.0 has been rehearsed on Linux with a locally built wheel; macOS and Windows are not yet verified on 0.3.0 |
The first card is the important one. It is a design difference Okto Neuron has not closed and does not claim to.
Graphiti edges carry created_at, valid_at, invalid_at and expired_at. When information changes, old facts are invalidated, not deleted, and you can ask what was true at any point in time. Okto Neuron only dates a superseded claim with valid_until at ingest, inside the document being edited, and has no point-in-time query.
Zep runs Graphiti as a fully managed service or in your cloud, with SOC 2, HIPAA and BYOC. Okto Neuron has no hosted option.
Zep publishes LoCoMo and LongMemEval scores with latency for its platform. Okto Neuron publishes LoCoMo only, from its own harness and judge, with no latency figures and no speed claims. The two sets of numbers were produced differently, so this page does not put them side by side.
Neo4j, FalkorDB (server or embedded Lite), Neptune or Kuzu, and a Python library alongside the MCP server. Okto Neuron's MCP server is wired to Claude Code by the installer; other clients are unverified.
Graphiti traces a fact to the episode it came from. Okto Neuron traces a claim to a block with byte_start, byte_end and a sha256 content_hash in a file you can open. If the bytes changed, the hash says so.
In Graphiti the graph database is the store. In Okto Neuron the Markdown vault is the store and the graph is derived from it. A rebuild re-runs LLM extraction over the same files, so the new graph can differ from the old one, and the history of superseded claims is not recreated.
Every ask stamps retrieval.synthesis_status: ok, empty, provider_error, truncated, abnormal_stop or no_llm. An unreachable model returns empty text and a reason, never a paragraph that looks finished.
Okto Grafx is embedded by default and runs inside the daemon the installer starts. The MCP port is bearer-authenticated while REST and UI stay on loopback. Neo4j is an option if you install the neo4j extra.
You need to ask what was true at a date, not just what is true now.
Your sources are conversations and events, not a folder of Markdown.
You already run Neo4j, FalkorDB or Neptune, or you want Zep to run it for you.
You want a Python library to build on.
You need LongMemEval results or latency figures, which Zep publishes for its platform.
Your knowledge already lives in Markdown and must stay there as the source of truth.
You want each cited source in an answer to come back with its file path, byte range and content hash.
You want nothing hosted, and you are fine with a prerelease.
You want a failed synthesis to say so in the payload.
No. Our LoCoMo results come from our own harness and a local judge, on categories 1-4 only. Figures other projects publish use their own setup. Ours are on the benchmarks page.
It is source-available. From 0.3.0 the license is the Elastic License 2.0 with an addendum covering SaaS, competing services, internal use and branding. Releases up to 0.2.0 stay under Apache 2.0. The source is on GitHub.
No. It runs on your machine, binds 127.0.0.1 and needs no account.
Every competitor statement on this page comes from one of these pages, read on 2026-09-19, with key rows re-checked on 2026-09-26. If a source has changed since, the page is wrong and we would like to know.
Prerelease 0.3.0. Free to run locally. No account required.