All comparisons
Comparison · Graphiti Prerelease 0.3.0 · sources read 2026-09-19

Okto Neuron vs Graphiti. Two graphs, two ideas of what a fact points 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.

5
MCP tools: ask, explore, remember, list_vaults, init_vault
0
Hosted tiers. Runs on your machine only
LoCoMo
Measured with our own harness. Results on the benchmarks page
0.3.0
Prerelease. Claude Code is the wired MCP client
01 · Framing

A graph over episodes, or a graph over files.

Graphiti ingests episodes (messages, JSON, text), extracts entities and facts with an LLM, and stores them with time bounds in Neo4j, FalkorDB or Neptune. 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.

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.

Okto Neuron

The vault is the trust root; the graph is derived 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.

02 · The table

Side by side, row by row.

Competitor cells paraphrase the Graphiti README, MCP README, edges.py, help docs and the Zep pricing page. Okto Neuron cells were checked against the v0.1.0 source, when the project was still called Marginalia; the licence, benchmark and maturity rows reflect 0.3.0.

DimensionGraphitiOkto Neuron
Where data livesYour graph database, self-hosted. Zep is the fully managed or in-your-cloud version with a proprietary engineMarkdown vault on your disk. The vault is the trust root; nothing is hosted
StorageBring your own: Neo4j 5.26, FalkorDB 1.1.2, or Amazon Neptune with OpenSearch Serverless. The MCP server defaults to FalkorDBOkto Grafx by default (embedded), Ladybug legacy, Neo4j optional. The graph is derived and rebuildable
Agent accessPython 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 CopilotMCP with five tools over a bearer-authenticated port; REST and UI on loopback. The installer wires Claude Code
Provenance unitThe episode. Edges carry episodes, fact and reference_time; entities get MENTIONS edges. No byte range or content hash foundA block: vault-relative path, byte_start, byte_end and a sha256 content_hash, returned with include_sources=true on ask
Temporal modelBi-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 timeIngest-time supersession bounded to the document being edited: valid_until on the old claim, a supersedes edge from the new one. No point-in-time query. No vault-wide contradiction detection
ExtractionLLM, 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 extractionLLM curation at ingest against an OpenAI-compatible endpoint, loopback runtimes probed first. Synthesis on ask reports synthesis_status
LicenceApache 2.0Elastic License 2.0 from 0.3.0 (source-available). Releases up to 0.2.0 stay Apache 2.0
Hosted optionZep: free tier with 10,000 credits per month, Flex at $125/month, Flex Plus at $375/month, Enterprise custom. SOC 2, HIPAA, BYOCNone
TelemetryAnonymous, on by default, opt out with GRAPHITI_TELEMETRY_ENABLED=false; never collects contentNo analytics or telemetry dependency in the shipped package
BenchmarksLoCoMo 94.7% and LongMemEval 90.2% claimed, with latency figuresLoCoMo 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
MaturityEstablished framework with a commercial managed service behind itPrerelease 0.3.0 for macOS and Linux; so far rehearsed on Linux only
03 · Where Graphiti is ahead

What Graphiti has that Okto Neuron does not.

The first card is the important one. It is a design difference Okto Neuron has not closed and does not claim to.

Bi-temporal edges

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.

A managed service

Zep runs Graphiti as a fully managed service or in your cloud, with SOC 2, HIPAA and BYOC. Okto Neuron has no hosted option.

Published benchmarks

Graphiti publishes LoCoMo and LongMemEval scores with latency. 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.

Backend and client choice

Neo4j, FalkorDB or Neptune, 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.

04 · Where Okto Neuron differs

What Okto Neuron does that is not the same thing.

Provenance to the byte, not the episode

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.

The file is the truth, the graph is disposable

In Graphiti the graph database is the store. In Okto Neuron the Markdown vault is the trust root and the graph is derived from it and can always be rebuilt. Nothing lives only in the database.

A failed answer looks failed

Every ask stamps retrieval.synthesis_status: ok, empty, provider_error, truncated or abnormal_stop. An unreachable model returns empty text and a reason, never a paragraph that looks finished.

No database to run

Okto Grafx is embedded by default. There is no Neo4j or FalkorDB to stand up, and the MCP port is bearer-authenticated while REST and UI stay on loopback. Neo4j is optional if you want it.

05 · Choosing

Pick by the question you need the graph to answer.

Choose Graphiti if

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, or you need LongMemEval results or latency figures.

Choose Okto Neuron if

Your knowledge already lives in Markdown and must stay there as the source of truth.

Each claim in an answer has to be checkable against the exact bytes of the exact file.

You want nothing hosted and no database to operate, and you are fine with a prerelease.

You want a failed synthesis to say so in the payload.

06 · Sources

Where each competitor claim comes from.

Every competitor statement on this page comes from one of these pages, read on 2026-09-19. If a source has changed since, the page is wrong and we would like to know.

Point it at your notes. Check the bytes yourself.

Prerelease 0.3.0. Free to run locally. No account required.