v1.8.5-ce — Agent-memory primitives¶
Released: 2026-06-15 · Tag: v1.8.5-ce · Docker: synapcores/community:v1.8.5-ce
What's new¶
Three new first-class SQL functions for agentic long-term memory:
-- Store text in a namespace, returns a memory id
SELECT MEMORY_STORE('default', 'I prefer Python over Java') AS memory_id;
-- Semantically retrieve similar memories (table-valued)
SELECT id, content, similarity
FROM MEMORY_RECALL('default', 'what languages do I like', 5);
-- Hard-delete a memory by id, returns BOOLEAN
SELECT MEMORY_FORGET('default', 'mem_abc123') AS deleted;
MEMORY_STORE auto-creates a per-namespace backing table _memory_<namespace> on the first call, embeds the content via your configured embedding model (default all-minilm:latest, dim 384), and returns a sortable id (mem_<base32 ts>_<6 alphanum>). MEMORY_RECALL is a table-valued function that scans the namespace, computes cosine similarity per row, and returns the top top_k rows ordered by similarity DESC. Per-tenant scoped via the standard storage path.
Full reference: SQL reference — Memory primitives.
Namespace rules
namespaceMUST match^[A-Za-z_][A-Za-z0-9_]*$— alphanumeric + underscore, must not start with a digit.- Namespaces are per-tenant. The same
defaultnamespace in two tenants stores in different RocksDB columns.
Why it matters¶
Until v1.8.5, every agent-memory plugin — OpenClaw, the planned Hermes plugin, synapcores-agent — had to re-implement long-term memory by hand: CREATE TABLE, EMBED, an HNSW index, COSINE_SIMILARITY ranking, accessed_at bookkeeping. One typed surface replaces ~150 LOC of plumbing per plugin and gives every agent a portable contract.
Shipping alongside this release:
@synapcores/sdk@0.5.0(Node) exposesclient.memory.store / recall / forgetsynapcores 0.5.0(Python) exposes the same surface@synapcores/openclaw-memory@0.4.0migrates toclient.memory.*instead of hand-rolled SQL- The MCP
sql_manualtool lists the three primitives with examples — LLMs introspecting your engine can discover them
Try it in 60 seconds¶
After upgrading, against any running engine:
-- Persist three preferences
SELECT MEMORY_STORE('user_42', 'Prefers Python over Java for systems work');
SELECT MEMORY_STORE('user_42', 'On a low-carb diet');
SELECT MEMORY_STORE('user_42', 'Strong opinions about Postgres vs MySQL');
-- Ask for what they like programming-wise
SELECT id, content, similarity
FROM MEMORY_RECALL('user_42', 'what programming language', 3);
-- → row 1: "Prefers Python over Java..." similarity ~0.45
-- → row 2: "Strong opinions about Postgres..." similarity ~0.20
-- → row 3: "On a low-carb diet" similarity ~0.05
Engine changes¶
Seven commits on top of v1.8.4-ce:
| Commit | What |
|---|---|
f592475b |
Parser + planner + AST surface for MEMORY_* |
50f42d99 |
Wire MEMORY_* through both physical-plan and AI-function paths |
d83c7ebc |
Register MEMORY_* in sql_manual MCP tool |
e1991d42 |
Integration tests for STORE / RECALL / FORGET |
72ec5867 |
Require AI service for MEMORY_STORE / MEMORY_RECALL |
acd48eac |
MEMORY_RECALL.accessed_at bump non-destructive |
f09b5dc3 |
AIDB_SQL_MANUAL.md MEMORY_* reference (engine + frontend) |
Validation¶
Live-tested end-to-end against the release binary:
MEMORY_STORE($1, $2)returns a validmem_<ts>_<rand>idMEMORY_RECALL($1, $2, $3)returns cosine-ranked rows; relevant matches score in[0.4, 0.95]MEMORY_FORGET($1, $2)returnsBOOLEANand the backing row is gone- Parameterized SQL (
$1, $2, $3) binds correctly through all three primitives - 17/19 Python SDK live integration tests pass (the 2 fails are an embedding-model similarity-threshold sharpness issue and a known
DocumentStorage::deletequirk — neither blocks the release)
Install / upgrade¶
Download from the GitHub release page. Tarballs available for linux-x86_64, linux-x86_64-ubuntu24, linux-aarch64, linux-aarch64-ubuntu24, darwin-aarch64. Each ships with a SHA-256 sidecar.
Compatibility¶
- Minimum engine version for the new SDK clients: v1.8.5-ce
- OpenClaw plugin v0.4.0 declares
openclaw.compat.synapcoresEngine: ">=1.8.5-ce" - Pre-v1.8.5 servers are unaffected — the primitives are additive; nothing existing changes shape
- Upgrade is in-place — no data migration required