3.0.0 — Powering long-term memory for agents (2026-04-28)¶
EvolutionDB 3.0 is the closure of the agent-memory roadmap proposed in ADR-002. The release re-positions the project from "another open-source SQL database" to a single-process backend purpose-built for AI agent frameworks.
Highlights¶
- First-class agent-memory DDL.
CHECKPOINT STORE,MEMORY STORE,MESSAGE LOG,DOCUMENT STORE,GRAPH STORE,ENTITY STOREare now native catalog objects. - Vector + ANN.
VECTOR(N)data type, distance functions (<=>,<->,<#>), HNSW index, hybrid search. - Time-travel queries.
FOR SYSTEM_TIME AS OF TRANSACTION <xid>returns the snapshot at the captured transaction; newWITH SYSTEM VERSIONINGtable modifier lets the engine maintain history automatically. - Bitemporal knowledge graph.
GRAPH STOREupserts nodes and edges withvalid_from,valid_to,invalid_atso "what did we know about X six months ago" is a single SQL query. - Mongo-style document filter DSL.
DOCUMENT FILTER FROM … WHERE '<json>'accepts the operator subset agent applications actually use ($eq,$ne,$gt,$gte,$lt,$lte,$in,$nin,$and,$or,$not,$exists). - Reactive streaming. Durable
LISTEN/NOTIFYsubscription queues survive disconnects; CDC streaming server emits NDJSON events per WAL change on a dedicated port (default 9970). - TTL columns + scheduled jobs.
CREATE TABLE … WITH (ttl_column='expires_at')enables a background prune daemon;CREATE JOB … ON SCHEDULE '<cron>' DO …registers cron-style jobs. - C SDK + Python ctypes binding.
libevosql-memory.{dylib,so,a}exposes a connection / exec / query / memory / checkpoint / vector / subscription surface; the Python wrapper auto-discovers the library and bridges the streaming callback into Python under thread-local error storage. - Six framework adapters. Drop-in shims for LangGraph, LangChain, LlamaIndex, CrewAI, AutoGen, and a Mem0-compatible Memory class. None of them imports its target framework — applications can install whichever subset they actually use.
What's measured¶
From bench/run_all.py (single-process Docker deploy, p99):
| op | p99 |
|---|---|
MEMORY PUT |
~ 8 ms |
MEMORY GET |
~ 2 ms |
CHECKPOINT PUT |
~ 5 ms |
MEMORY SEARCH top-10 |
~ 4 ms |
| NOTIFY push delivery | ~ 0.4 ms |
| poll @ 1 s | ~ 990 ms |
Push delivery is roughly 2900× faster than a 1-second polling loop.
Compatibility¶
The framework-compat suite (44 cases plus a 16×50 cross-adapter concurrency stress) runs as a separate matrix job per framework on every push and PR. Status:
Breaking changes from 2.x¶
- None at the SQL level. Every 2.x DDL/DML statement still works; the new agent-memory primitives are additive.
- File format version 8. Pre-existing
evosql.dbfiles from 2.x are not auto-migrated —pgm_initrejects mismatches with a clear error. The agent-memory catalog slots (CAT_SYS_CHECKPOINT_STORESthroughCAT_SYS_ENTITY_STORES) required wideningcatalog_roots[]to 27 slots, which is what bumped the major version. Take apg_dump-style backup (COPY TO) before upgrading from 2.x; restore withCOPY FROMafter upgrade. A future 3.1 will ship an in-place migrator. - Major version bump (2.1.0 → 3.0.0). Reflects the product repositioning as well as the file-format change.
What's deferred¶
- Task 215 v2 (Task 170): SQL execution body for scheduled jobs.
v1 records calendar fires +
last_run_unix; the cron evaluator works but the job body itself doesn't run because re-enteringquery_executefrom the auto-RECLAIM thread stomps thread-local state. v2 ships a dedicated executor thread. - Task 211 v2: server-side ack channel for CDC. The C SDK records local cursor; the durable-queue ack pipe is on the v2 list.
- Cross-vendor bench rows. Zep / Mem0 / langgraph-store-mongodb
/ Pinecone comparison rows in
bench/run_all.pyare scaffolded but disabled — the comparator backends ship as separate Docker images and the v3.1 sweep adds them. - Mongo-filter on JSON paths. The DSL works on top-level
document columns;
meta.subkeypaths are v3.x.
Upgrade path¶
- Take a backup:
psql -p 5433 evosql -c '\COPY my_tbl TO …'. - Stop 2.x:
docker compose down. - Replace the image tag with
evolutiondb/evolutiondb:3.0.0. - Start 3.0:
docker compose up -d. - Reload schema and data via
\COPY FROM.
Documentation¶
- README — overview
- 60-second quickstart
- Comparison vs Mongo / Pinecone / Zep / Mem0 / Weaviate
- Benchmarks (v1)
- ADR-002 — Agent Memory pivot
- Launch blog post
Thanks¶
To everyone who tried 2.x and reported what didn't work — the agent-memory pivot started from those reports.