Skip to content

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

  • namespace MUST match ^[A-Za-z_][A-Za-z0-9_]*$ — alphanumeric + underscore, must not start with a digit.
  • Namespaces are per-tenant. The same default namespace 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) exposes client.memory.store / recall / forget
  • synapcores 0.5.0 (Python) exposes the same surface
  • @synapcores/openclaw-memory@0.4.0 migrates to client.memory.* instead of hand-rolled SQL
  • The MCP sql_manual tool 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 valid mem_<ts>_<rand> id
  • MEMORY_RECALL($1, $2, $3) returns cosine-ranked rows; relevant matches score in [0.4, 0.95]
  • MEMORY_FORGET($1, $2) returns BOOLEAN and 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::delete quirk — neither blocks the release)

Install / upgrade

curl -fsSL https://get.synapcores.com | sh
curl -fsSL https://get.synapcores.com | SYNAPCORES_VERSION=v1.8.5-ce sh
docker run -d \
  -p 8080:8080 \
  -e AIDB_ACCEPT_LICENSE=1 \
  -v synapcores_data:/opt/synapcores/aidb_data \
  synapcores/community:v1.8.5-ce

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