mrkeyoor.com_
Tue 01 Sept 17:41 UTC
LLM Toolsevaluationupdated 01 Sept 2026

graphiti review

Graphiti is a Python framework that turns conversations and other changing data into a knowledge graph for AI agents. It keeps the source episode, the extracted entities, and the time window for each fact, which lets an application ask what is true now or what was true earlier.

trackingstars / 7d
Verdict

Our Graphiti install took 111 seconds and 5,322 MB, then the test suite timed out at 900 seconds after showing errors and failures. Use it when temporal validity, provenance, and graph retrieval justify running a database plus model services. Hold off on concurrent FalkorDB group isolation until the reported shared-driver bugs are resolved and verified in your deployment.

We ran it

Lab card: what happened when we ran graphitiScreenshot of graphiti (help.getzep.com/graphiti)
Install✓ · 111s236 packages · 5322 MB
Build✓ · 6s
Tests✗ timed out · 900sran, no count parsed
Known vulns0(pip-audit)
Repo359 files~61,771 lines of source · 22.4 MB · 12 CI workflows · Dockerfile · tests dir

Answers from our run

Does graphiti build from source?

Dependencies installed in 111 seconds (236 packages), and the build succeeded in 6 seconds. We cloned commit 8b61fce into a clean Debian container with 3 CPUs and no project-specific setup.

Do graphiti's tests pass?

We could not finish them: the suite was still running after 15 minutes in our container.

Does graphiti have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use graphiti?

Teams treating concurrent FalkorDB groups as a hard tenant boundary: open issue 1331 reports shared-driver mutation that can write one group's data into another graph.

What are the alternatives to graphiti?

Microsoft GraphRAG, Mem0, Zep. Our Graphiti install took 111 seconds and 5,322 MB, then the test suite timed out at 900 seconds after showing errors and failures.

Setup2/55,322 MB install plus database and model services
Docs4/5Detailed backends, providers, telemetry, MCP, and limits
Community5/530,471 stars, September push, and active issue work
Maturity3/5v0.29.3 is active; isolation and search risks remain

Who it’s for

Agent teams that need facts to expire or change without deleting their history.
Python developers prepared to operate Neo4j, FalkorDB, or Amazon Neptune beside an LLM and embedding provider.
Applications that need graph relationships and source provenance alongside semantic and keyword search.
MCP builders who want assistants to add, search, retrieve, and delete graph episodes through a server interface.

Who it’s NOT for

Teams treating concurrent FalkorDB groups as a hard tenant boundary: open issue 1331 reports shared-driver mutation that can write one group's data into another graph.
Buyers expecting user management, conversation storage, dashboards, security guarantees, or a managed database in the open-source package: the README says Graphiti users build and operate those pieces.
Local-model deployments that cannot tolerate malformed structured output: the README warns that small models may fail extraction, and issue 868 reports a minimal Ollama setup returning the wrong schema.
New projects planning to use Kuzu: the README marks that backend deprecated because its upstream project is no longer maintained.
Organizations that forbid opt-out product telemetry: initialization sends an anonymous ID, platform details, version, and provider choices unless GRAPHITI_TELEMETRY_ENABLED=false is set.

Setup reality

Our sandbox installed 236 Python packages in 111 seconds and occupied 5,322 MB. The build succeeded in 6 seconds. Tests timed out at 900 seconds; the last progress shown was 43%, with error and failure markers but no final count. Pip-audit found 0 known vulnerabilities.

A useful run needs Python 3.10 or newer, a supported graph database, and an LLM plus embedding path. OpenAI is the default and needs an API key. Anthropic, Gemini, Groq, Azure OpenAI, and OpenAI-compatible local servers need their own credentials or endpoints and model configuration.

Neo4j, FalkorDB, and Neptune have different setup paths, while Kuzu is deprecated. Structured JSON output is part of extraction, and the README warns that smaller models can return invalid schemas. Ingestion concurrency defaults to 10 operations to reduce provider 429 errors. Anonymous telemetry is enabled unless you turn it off.

Graphiti v0.29.3 keeps current and historical facts together

Graphiti v0.29.3 models knowledge as entities, relationships, source episodes, and optional custom types. A relationship can have a validity window, so a newer episode can invalidate an old fact while preserving the earlier state and its source. That is more useful than a flat chunk store when an agent must distinguish a former job, address, preference, or policy from the current one.

The repository at commit 8b61fce contained 359 files, about 61,771 source lines, and 22.4 MB before dependencies. The core can ingest text or structured JSON, extract entities and edges, and search with semantic, keyword, and graph methods. Pydantic models let an application prescribe entity and edge types. Learned structure is also supported, though the model provider still decides whether extraction follows the requested schema.

Version 0.29.3 still requires a database and model stack

Graphiti v0.29.3 does not include its own production graph engine. The README supports Neo4j, FalkorDB, and Amazon Neptune, with OpenSearch Serverless also required for Neptune full-text search. OpenAI is the default for language and embedding calls. Anthropic, Gemini, Groq, Azure OpenAI, Voyage, and compatible local endpoints add choices, but each combination brings credentials, model names, dimensions, and structured-output behavior to test.

Our installed Python environment used 5,322 MB for 236 packages before any graph database image or local model weights. The README's Compose files can start Neo4j or FalkorDB, but application owners still handle backups, upgrades, network access, and database credentials. Zep's managed product includes user and conversation services; Graphiti's comparison table says open-source users build those themselves. That distinction should drive the buy-versus-build decision.

What happened when we ran it

Our sandbox installed Graphiti in 111 seconds, adding 236 packages in a Python 3.12 Debian container with 3 CPUs and 8 GB of RAM. The build completed in 6 seconds. Pip-audit reported 0 known vulnerabilities. The 359-file repository included 12 CI workflow files, a Dockerfile, a Compose file, and a tests directory, which gives contributors visible paths for automation and local services.

The test command did not finish within 900 seconds. Its last output showed progress at 14%, 28%, and 43%, followed by groups of E and F markers. The run ended before pytest printed a final pass, error, failure, or skip count, so those totals are unknown. The log establishes a timeout with errors and failures in our no-secret environment; it does not identify their causes.

The 900-second timeout blocks a clean test verdict

A passing 6-second build confirms that the package could be assembled in the measured environment. It does not compensate for a test run that reached 43% and never completed. Some Graphiti tests may depend on databases, providers, or other services, but the supplied tail does not map each marker to a missing dependency. A contributor should reproduce the suite with the project's expected service matrix and retain the first complete trace.

The checkout consumed 5,322 MB after a 111-second installation, unusually high for 22.4 MB of source. That result makes cache strategy and image layering worth checking before CI fan-out. It also sets the right expectation for a local trial: uv sync is only the package step. A realistic evaluation adds a graph backend, model access, sample episodes, index creation, retrieval checks, and verification that an updated fact gets the intended validity window.

FalkorDB group routing has open isolation reports

Open issue 1331 reports that concurrent add_episode calls for separate FalkorDB groups mutate a shared driver, allowing writes to land in the wrong graph. Issue 1651 describes MCP episode retrieval and deletion using whichever graph that driver currently targets. Both reports concern group routing, not a generic database complaint. Teams using group IDs for tenant separation should treat them as application data boundaries only after an adversarial concurrency test proves isolation.

Our 900-second suite was run without secrets and does not confirm or refute either report. Another open report, issue 1756, says a clean graphiti-core[falkordb] install can resolve an incompatible Redis version and fail while constructing the driver. The latest v0.29.3 release includes several FalkorDB routing and search fixes, which shows maintainer attention, but the open group contamination reports were updated after that release.

The MCP server exposes the graph, including its backend choices

Graphiti includes an MCP server for adding, retrieving, deleting, and searching episodes and entities. That makes temporal memory available to an assistant without writing a custom protocol adapter. It does not separate the assistant from the graph's security model. Database credentials, model keys, group routing, tool authorization, and deletion policy remain server concerns, while issue 1651 specifically places two wrong-graph behaviors in MCP handlers.

The measured repository has 12 CI workflows plus Docker and Compose files, yet the MCP path still needs a live acceptance test. Add data to 2 groups, query each group, delete one episode, restart the container, and query again. That sequence checks the failure class described in current issues more directly than a single successful search. For sensitive memories, also set GRAPHITI_TELEMETRY_ENABLED=false before initialization if the documented anonymous collection conflicts with policy.

A September 2026 push and 279 open issues show active repair

GitHub recorded the last push on September 1, 2026, along with 30,471 stars. Search found 279 open issues, while repository metadata counted 483 issues and pull requests together. Releases v0.29.0 through v0.29.3 arrived between April 27 and July 27, 2026. The queue is large, but recent releases and late-August issue discussion show that maintainers and users are still working through backend behavior.

Activity does not shrink a 5,322 MB environment or turn the timed-out suite into a pass. Graphiti is most defensible when the application needs time-aware facts with episode provenance and the team can test extraction, isolation, and retrieval against its exact models and graph backend. A simpler memory layer is easier to own when historical graph queries are only a possibility rather than a requirement.

Alternatives

ProjectWhat it isPick it when
Microsoft GraphRAGA graph-based indexing and retrieval system aimed at extracting structure from document collections.pick this instead when the source is a mostly static document corpus and batch indexing suits the workload.
Mem0 gh↗An agent memory layer centered on extracting and retrieving user or session memories.pick this instead when compact agent memory matters more than explicit temporal graph traversal and provenance.
ZepGetZep's managed context graph service with built-in operational and application services.pick this instead when managed infrastructure, user and thread handling, support, and governance are worth a hosted dependency.

What people are saying

  1. [velocity-scout] getzep/graphiti

Sources

  1. Graphiti README
  2. Graphiti GitHub repository metadata
  3. Graphiti v0.29.3 release notes
  4. FalkorDB cross-group contamination issue 1331
  5. FalkorDB clean-install issue 1756
  6. MCP wrong-graph routing issue 1651
  7. Neo4j vector search issue 1793
  8. Ollama structured-output issue 868

More llm tools reviews

rig · open-knowledge · cve-mcp-server · minimind · SillyTavern · Hy4-preview · the whole board →