privacy. Episode content is sent to the configured LLM provider for extraction; use a local model for sensitive data.
cost. Ingestion calls the LLM for every episode; the README sets SEMAPHORE_LIMIT to 10 by default to avoid 429 rate limit errors.
Who it is forA developer whose assistant forgets or contradicts user preferences that change over time.
The problemFlat document chunks cannot tell an old fact from its replacement.
The outcomeA context graph where superseded facts are invalidated, not deleted, and every fact traces back to its episode.
What you need first
- Python 3.10 or higher; install with `pip install graphiti-core`
- A graph database: Neo4j 5.26, FalkorDB 1.1.2, Amazon Neptune, or Kuzu (deprecated)
- An OpenAI API key by default, or another provider such as Anthropic, Gemini, Groq or a local Ollama server
Steps
- Install the library with
pip install graphiti-coreand setOPENAI_API_KEYin your environment - Start a graph database with
docker compose upfor Neo4j, ordocker compose --profile falkordb upfor FalkorDB - Follow the Quickstart Example to connect, build the indices and constraints, and add text and JSON episodes
- Query with hybrid search for relationships and rerank results by graph distance
Prompt for your agent
Using getzep/graphiti, install it with `pip install graphiti-core`, start Neo4j with `docker compose up`, ingest <my conversation log> as episodes, and show me one fact that was invalidated by a later episode.
Caveat. Graphiti works best with LLM services that support structured output; smaller models may cause ingestion failures.
Use this in your AI agent
Ask your agent
Using the Deduped MCP, get the setup steps for getzep/graphiti and "Give an agent memory that tracks how facts change"
Add Deduped to Claude Code once
claude mcp add --transport http deduped https://dedupedai.com/mcp
Every Monday: the 5 hottest repos and exactly how to use them. Free, one email a week, unsubscribe anytime.
Get them freeShare: X LinkedIn Hacker News Email Copy link
Third-party repos we don't own. AI-written use cases can be wrong. Disclaimer