cel-memory
Backend-agnostic memory traits and value types for AI agents.
cel-memory is the contract between an agent and an arbitrary persistence
layer. The trait is small enough to drop in your own backend (file, SQLite,
Redis, Mem0, Hindsight, etc.) without changing agent code. The companion
cel-memory-sqlite crate provides a local SQLite
implementation.
Purpose
Use cel-memory when agent code needs durable, scoped retrieval but should not
depend on a storage engine. Callers depend on MemoryProvider; backends decide
how chunks are stored, embedded, indexed, summarized, and aged.
Status: v0.1 — the MemoryProvider trait surface is stable. Two implementations ship against it: BasicMemoryProvider (in-crate, in-memory reference) and cel-memory-sqlite (SQLite + vector + FTS, hybrid retrieval).
What's Included
MemoryProvidertrait — async interface every backend implements.- Value types:
MemoryChunk,ChunkKind,MemoryTier,MemoryQuery,MemorySession, etc. BasicMemoryProvider— in-memory reference impl. Useful for tests and as the conformance reference for new backends.MemoryWriteHooktrait — governance hook every backend should consult before persisting (lets a rule engine redact or veto writes).MemoryError— self-contained error type.
Out Of Scope
- Storage. See
cel-memory-sqlitefor SQLite + vector retrieval. - Embedding models. The trait makes no assumption about whether/how content is embedded — that's a backend concern.
- LLM-call retrieval logic. See
cel-brieffor "retrieve memory + assemble into an LLM prompt."
Example
use ;
use json;
let memory = new;
memory.write.await?;
let hits = memory.retrieve.await?;
Runnable examples:
basicuses the in-memory reference provider end to end.backend_swapshows application code written againstMemoryProvider.write_hookshows policy/redaction before persistence.custom_providershows a provider wrapper that implements the trait.
Comparable libraries
| cel-memory | Hindsight | Mem0 | Letta | |
|---|---|---|---|---|
| Language | Rust | Python | Python | Python |
| Local-first | ✓ | ✓ | partial | ✓ |
| Pluggable backend | ✓ (trait) | partial | ✗ | ✗ |
| Governance hooks | ✓ | ✗ | ✗ | partial |
| Per-caller scoping | ✓ | ✗ | partial | partial |
| Sessions | ✓ | ✓ | ✓ | ✓ |
License
Apache-2.0