We're hiring! Come build with us
Zep
Agent Memory

Memory built from any data source

Ingest chat, business data, and documents. Shape the graph to your domain. Retrieve relevant context in under 200ms.

Start Building
Trusted By AI Teams
Fortune 500 Tech Co.
Twin Health
Praktika.ai
Thrive AI Health
AGI Inc
Harper
FlockX
Amazon Web Services
Samsung
Writer
Aurasell
HoneyBook

Memory Built on Context Graphs

Create memories from any source. Zep constructs the graph. Retrieve relevant, token-efficient context.

Any Source

Chat History
Business Data
User Interactions

People, things, and how they change.

Automated Context Assembly

context_response.py
Emily prefers cycling to jogging
(Valid: 2024-11-14 — present)
# Observations
Emily's blood pressure ranges 5%
lower after cycling workouts.

Memory that understands when things change

When new information contradicts what’s in the graph, Zep invalidates the old fact. Your agent reasons with the latest decisions, traits, and behaviors.

Old facts stay as history. Ask what’s true now, or what was true on any past date.

RRobbie2024-09-07 · 14:27
I only wear Adidas shoes. I love them!
Facts
  • Robbie only wears Adidas shoes.
  • Robbie strongly favors Adidas shoes.
soleworks.com/account/returns/SO-48219
SoleworksReturn · Order #SO-48219 · Adidas Ultraboost 22

Reason for return

Product fell apart

Additional comments

These Adidas fell apartafter three weeks and I'm furious. I'll be buying Nike from now on.
Facts
  • Robbie only wears Adidas shoes.
  • Robbie strongly favors Adidas shoes.
  • Robbie’s Adidas shoes fell apart.
  • Robbie is returning their Adidas shoes.
  • Robbie is angry about their Adidas shoes.
  • Robbie intends to wear Nike shoes.

More accurate. Faster. Fewer tokens.

Agent memory systems often trade one for another. Zep leads on all three.

LoCoMo
94.7%accuracy
Retrieval latency155 ms
Context size5,760 tokens
LongMemEval
90.2%accuracy
Retrieval latency162 ms
Context size4,408 tokens

Memory patterns become Observations

Zep analyses the structure of the graph to surface Observations: patterns, recurrences, and co-occurrences in memory. Your agent gains a global perspective, beyond facts and summaries.

Jane has upgraded within two weeks of each of the last three product launches.

Apr 12, 2025

Jane upgraded to Pro v3.

+9d after launch
Aug 4, 2025

Jane upgraded to Pro v4.

+11d after launch
Nov 19, 2025

Jane upgraded to Pro v5.

+6d after launch

Smart Context Assembly

Zep picks the most valuable memory for the task at hand. Facts, summaries, and Observations selected to fit your token budget.

Smarter than vector search alone, packed into a prompt-ready block.

8 candidates · ranked for task
ObsJane upgrades within 2 weeks of each launch.
FactJoined Aug 2024.
FactCurrently on Pro v4.
FactAccount billing monthly.
SumRecent chats: power-user features.
SumPast tickets: rate limits.
ObsTickets pair with plan changes.
FactLast login 12h ago.
Context block1,847 / 2,000
ObsJane upgrades within 2 weeks of each launch.
FactCurrently on Pro v4.
SumRecent chats: power-user features.
ObsTickets pair with plan changes.

Token-efficient Context Blocks

Zep returns a prompt-ready Context Block — shaped by your template — to drop into your agent’s prompt.

Your template
<USER_SUMMARY>
  {{ user_summary }}
</USER_SUMMARY>
<OBSERVATIONS>
  {{ observations }}
</OBSERVATIONS>
<FACTS>
  {{ facts }}
</FACTS>
Context block
<USER_SUMMARY>
  Pro user. Upgrades after each launch.
</USER_SUMMARY>
<OBSERVATIONS>
  — Upgrades within 2 wks of launch.
  — Tickets follow plan changes (8/9).
</OBSERVATIONS>
<FACTS>
  — On Pro v4, billed monthly.
  — Usage above Pro median.
  — Last ticket: rate limits.
</FACTS>
Powered by Open Source

Built on Graphiti, the open-source Context Graph framework.

Graphiti is the Context Graph framework that builds Zep’s Context Graphs. Open source at the core.

GitHub stars on getzep/graphiti

Apache 2.0 · Originated by Zep

View on GitHub

Three Lines of Code

Add memory to your agent in minutes. Works with any agent framework, or none.

quickstart.py
# Add messages and get context in one callresponse = client.thread.add_messages(    thread_id=thread_id,    messages=[Message(name="Jane", role="user", content="I'd like to upgrade my plan...")],    return_context=True,) # Add business data to the user's graphclient.graph.add(    user_id=user_id,    type="json",    data=json.dumps({"event": "plan_upgrade", "to": "pro", "mrr": 49}),) # Get relevant contextuser_context = client.thread.get_user_context(thread_id=thread_id)

Customize for your domain

Zep adapts to your business through custom entity types and relationship models. These models enable precise recall of exactly the context your agents need, not generic conversations.

sales_entities.py
class Lead(EntityModel):    """Represents a sales lead or prospect."""    company_size = Field(        description="startup, SMB, mid-market, enterprise"    )    budget_range = Field(        description="Budget discussed or indicated"    )    decision_timeline = Field(        description="Expected decision timeframe"    )

Start with memory built for production

Start Building