Skip to content
Contextely
Reviews5 min readBy The Contextely Team

Migrating Off Zep Community Edition: A Practical Guide

Zep community edition lost active support in 2025. Here is what to migrate, what genuinely does not port across, and how to actually do it.

Stacked fragile moving boxes on a hand truck, representing the process of migrating off zep community edition to a new self hosted memory layer

Photo: Tima Miroshnichenko on Pexels

Key takeaways

Zep stopped actively maintaining Zep Community Edition in April 2025, redirecting its open-source effort to Graphiti, the graph engine underneath it, and steering self-hosters toward Zep Cloud instead. If you built on the self-hosted Community Edition, the repository still exists, but nothing new is landing in it, and that is worth treating as a real decision point rather than something to quietly ignore.

What actually happened, and when

In its own announcement, Zep described the difficulty of maintaining two different products at once, a fully open-source, community-supported edition and a feature-rich commercial multi-tenant service, and said design choices in one kept limiting the other. The resolution was to stop investing in Zep Community Edition specifically and put open-source effort behind Graphiti instead, the temporal knowledge graph engine that powered it. The Community Edition code moved into a legacy/ folder in the repository: still there under Apache 2.0, but no longer receiving updates or active support.

That leaves two real options if you want to keep running something yourself rather than moving to Zep Cloud: run Graphiti directly, which means provisioning and operating your own Neo4j, FalkorDB or Kuzu instance and building the session and retrieval layer above it, or move to a different self-hosted memory system entirely.

Is zep community edition still available at all?

Technically yes, the code is public. Practically, you are on your own for fixes, security patches and anything the ecosystem around it moves past. Treating "the repo still exists" as equivalent to "this is supported" is the mistake worth avoiding here.

What genuinely does not port across

Be honest about this before you migrate anything, because overpromising here just moves the disappointment later. Graphiti and Zep Community Edition represent memory as a temporal knowledge graph: entities, relationships, and how a fact changes or gets superseded across specific points in time. That is a specific, fairly sophisticated way of modelling memory, and a different system, one built around condensed summaries and lexical retrieval rather than graph traversal, is not going to reproduce that internal structure. It can reproduce the underlying facts. It will represent the relationships between them differently.

What you are moving Ports cleanly Needs rethinking
The underlying facts and content Yes, as source records to be re-condensed N/A
Citations back to where a fact came from Yes, as a reference field on the resulting record N/A
Temporal graph reasoning (how a fact changed over time) No Represented differently, or not represented at all, depending on the target system
Session and user management Depends on the target system's own model Usually needs remapping rather than a direct import

Table 1: what actually survives a migration off a temporal knowledge graph, and what has to be rebuilt or accepted as gone.

"The Zep team decided to stop maintaining and releasing Zep Community Edition... while the existing repository will remain open under the Apache 2.0 license, they will no longer provide updates or active support."
Summarising Zep's own announcement of its open-source strategy change, April 2025

What each remaining option actually requires

Before picking a direction, it is worth pricing out what each remaining path actually needs, because "self-hosted" and "managed" mean different levels of commitment depending which one you pick.

Running Graphiti yourself means provisioning Neo4j 5.26 or newer, FalkorDB 1.1.2 or newer, or an Amazon Neptune cluster, none of which is a small addition to a stack that previously just ran Zep's own container. It also needs Python 3.10 or newer and its own LLM key for inference and embedding, OpenAI by default, though Anthropic, Gemini, Groq and OpenAI-compatible endpoints are all supported. That is a real, separate operational commitment on top of whatever else you run, not a drop-in replacement for the Community Edition container you are used to.

Zep Cloud, the managed path Zep itself now points self-hosters toward, starts at $125 a month on its Flex plan, or $104 a month billed annually, for 50,000 credits a month with auto-topup and a 600 requests-per-minute ceiling. That removes the operational question entirely, at the cost of moving from self-hosted to managed, which for a lot of the teams who chose Community Edition in the first place was the point they were trying to avoid.

The actual migration steps

The mechanical part of this is more ordinary than it sounds, at least for the content itself, because a self-hosted memory layer built around reading from an existing system of record does not need a bespoke import API. It needs your exported data to look like any other source it already knows how to read.

  1. Export what you have. Pull the underlying facts and their source references out of your existing Zep or Graphiti instance, in whatever form is easiest for you to query, typically a flat table of records.
  2. Land it in a Postgres table you control, shaped with the columns a source connector expects: a reference id, a title, the content itself, and a link back to the original if you have one. A Postgres-backed source preset reads exactly this shape.
  3. Connect that table as a source. No custom integration code required if the columns match; this is precisely what the read-only SQL connector is for.
  4. Trigger a sync. The connector reads each record and condenses it, the same as it would for any other system of record, producing a memory object with its own citation and its own freshness contract rather than a raw copy of the row.
  5. Verify with a real query before you decommission the old system. Ask the kind of question you actually asked Zep, and confirm the answer, the citation and the freshness label all look right.

Do I need to migrate everything at once?

No, and doing it incrementally is usually the safer path. Point a source at a subset of your exported data first, verify retrieval quality and citations against real questions your team actually asks, and only then migrate the rest. Running the two systems in parallel for a short window costs little and catches a shape mismatch before it affects everyone.

What to check before you commit to any replacement

If a condensed, permission-aware memory store answers your actual usage pattern, rather than the graph-reasoning capability you may never have used directly, self-hosting walks through running one against your own Postgres, the docs cover the source connector shape referenced above in full, and our llm memory database comparison sets this approach against the wider field rather than against Zep specifically.

Frequently asked questions

Is zep community edition still available at all?

The repository remains public under Apache 2.0, and the code has been moved into a legacy folder, but Zep stopped actively maintaining and releasing it starting in April 2025. You can still run what exists, but you should not expect new fixes or features to land in it.

What is the difference between zep community edition and graphiti?

Zep Community Edition was the full product self-hosted: sessions, users, memory retrieval and the graph, packaged together. Graphiti is the temporal knowledge graph engine underneath it, released separately and still actively developed, but without Zep's session management, users and higher-level API on top. Choosing Graphiti means operating your own graph database (Neo4j, FalkorDB or Kuzu) and building the layer above it yourself.

Can I migrate zep memories into a new system without losing everything?

You can migrate the factual content: what was said, summarised and citable. What is harder to carry across intact is graph-specific temporal reasoning, meaning how Zep's engine represented a fact changing or being superseded over time, because a different memory system is very unlikely to model relationships the same way internally. Plan the migration around the content you actually query day to day, not around replicating the graph structure exactly.

Do I need a temporal knowledge graph, or was I just using one because it was there?

Worth asking honestly before you migrate. If your actual usage pattern is 'retrieve the relevant fact and cite where it came from,' a condensed, permission-aware memory store answers that without needing graph traversal at all. If your usage genuinely depends on reasoning about how a fact changed across specific points in time, that is a narrower and more specialised need, and it is worth confirming you actually have it before optimising a migration around preserving it.

Free for 500 retrievals a month, and self-hostable with no limits.