Polign Recall · Comparison

Recall vs Zep and Letta

Zep keeps a temporal knowledge graph where a changed fact is invalidated rather than deleted; Letta keeps an agent's memory as editable text blocks pinned into its prompt, with a vector store behind them. Recall keeps typed append-only records and works out what is current by rule. Two tables, the same eight rows.

Recall and Zep

RecallZep (Zep Cloud and Graphiti)
Storage ownershipYour own database: polign_db in your S3, GCS or Azure bucket, or PostgreSQL, MongoDB or Qdrant you already run. No vendor control plane.Zep Cloud, a hosted service (BYO cloud on Enterprise). The open-source engine Graphiti runs on Neo4j, FalkorDB or Amazon Neptune you operate; Zep Community Edition is no longer supported.
Typed recordsYes. Each fact is a subject, a predicate from a registry (or coined on first use) and a typed value; text is extracted into those by a model you name.A temporal knowledge graph: entity and edge types you can declare, facts as edges with valid_at, invalid_at, expired_at.
Corrections and supersessionBy rule at read time: a single-valued predicate's newer statement replaces the older one; a text statement can name what it makes untrue. Reads carry what was replaced.Yes, by the model: when information changes, the old fact's edge is invalidated, not deleted. Current facts are those with invalid_at unset.
Resume after restartYes. Working state, turns, outputs, pointers and in-flight tool calls per agent id, fenced by a lease; a new process resumes from a briefing.No. Zep stores facts and conversation; agent state stays in your framework.
Shared across agentsYes. One database, keys per namespace through recall serve, Kubernetes workload identity, packages for LangGraph, OpenAI Agents SDK, Pydantic AI, LiveKit, Vapi and MCP hosts.Yes, one graph per user or group in Zep Cloud; Graphiti shares one database.
Audit and historyAppend-only records with time and source; history, as_of reads, diff, and audit bundles replayable offline.Edges keep their validity window; search_edges takes date filters on those fields. No as-of convenience read documented.
Self-hosted pathpip install polign-recall runs a local database; recall serve or the Helm chart for a shared one. Apache-2.0.Graphiti (Apache-2.0) with a graph database and an LLM that supports structured output; no supported self-hosted Zep server.
PricingFree to self-host, no limits. Paid: design partner seat (60 days free, then $12k for 12 months) or a Production Agreement at $24k a year, flat.Free $0 (10,000 credits a month, 2 projects); Flex $125 a month (50,000 credits, $25 per 10,000 over); Flex Plus $375 a month (200,000 credits); Enterprise custom with SOC 2 Type II, HIPAA BAA and BYO cloud.

Recall and Letta

RecallLetta
Storage ownershipYour own database: polign_db in your S3, GCS or Azure bucket, or PostgreSQL, MongoDB or Qdrant you already run. No vendor control plane.Letta Cloud, or a Letta server you run on PostgreSQL with pgvector (the Docker image is no longer an actively maintained product surface).
Typed recordsYes. Each fact is a subject, a predicate from a registry (or coined on first use) and a typed value; text is extracted into those by a model you name.Memory blocks: labeled text blocks with a character limit, pinned into the system prompt; archival memory is a vector database of passages. MemFS keeps memory as Markdown files in a git repository.
Corrections and supersessionBy rule at read time: a single-valued predicate's newer statement replaces the older one; a text statement can name what it makes untrue. Reads carry what was replaced.The agent edits its own blocks with tools (memory_replace, memory_rethink); setting a block's value replaces the whole block. No rule-based supersession of individual facts.
Resume after restartYes. Working state, turns, outputs, pointers and in-flight tool calls per agent id, fenced by a lease; a new process resumes from a briefing.Yes, in Letta's own sense: the agent is a server-side stateful object whose blocks and message history persist between calls. Not a model for your own framework's agent.
Shared across agentsYes. One database, keys per namespace through recall serve, Kubernetes workload identity, packages for LangGraph, OpenAI Agents SDK, Pydantic AI, LiveKit, Vapi and MCP hosts.Yes. Blocks can be attached to several agents, so two agents share one block.
Audit and historyAppend-only records with time and source; history, as_of reads, diff, and audit bundles replayable offline.Blocks have no documented version history and concurrent writes can overwrite; MemFS commits every memory edit to git, which gives real history for that mode.
Self-hosted pathpip install polign-recall runs a local database; recall serve or the Helm chart for a shared one. Apache-2.0.letta server on your own PostgreSQL. Apache-2.0.
PricingFree to self-host, no limits. Paid: design partner seat (60 days free, then $12k for 12 months) or a Production Agreement at $24k a year, flat.Free $0 (5 MiB per memory repository); Pro $20 a month (up to 20 stateful agents, 50 MiB); API plan $20 a month plus $0.10 per active agent a month and $0.00015 per second of tool execution; Enterprise custom.

When to pick the other tool

Pick Zep when the relationships between entities are the point: who reported to whom and when, which product belongs to which account, questions a graph answers better than a list of facts. Its validity windows are real and its Cloud comes with SOC 2 and a HIPAA BAA. The cost is the graph database to run, or the hosted service, and on the changing-facts scenario Graphiti took about 14.7k tokens and 14 seconds per saved message against Recall's 3.0k and 3.8.

Pick Letta when you want the agent itself to be the stateful object, hosted and managed as one, and are building on Letta's runtime rather than bringing your own framework. Its memory blocks are a good fit for a small, always-visible self-model, and MemFS gives git history for memory edits. Recall is the better fit when several agents in different frameworks must read one memory, when a fact must replace another by a rule you can audit, or when the records have to live in your own bucket.

Where to go next

Sources, read on November 3, 2026: Zep facts, searching the graph, Graphiti, Zep Community Edition status, Zep pricing; Letta memory blocks, archival memory, MemFS, self-hosting, pricing.

Recall is typed, durable memory and state for AI agents. It stores corrections, decisions and task state as append-only records in your own object store (S3 or GCS), so an agent can be corrected without retraining and resumed after a crash, restart or pod replacement without snapshotting the process.

Try it

One pip install brings the client, the recall binary and the database. The snippet on this page runs as written.