Changelog
Track what's new, improved, and fixed in Sulcus.
v2.9.2 — April 22, 2026
Theme: Production Hardening
- Fast restart —
SULCUS_SKIP_MIGRATIONSenv var skips idempotent migration checks on cold start, reducing startup time from 5–7 minutes to under 10 seconds on production databases - Lean Docker builds — Python retrain dependencies now optional via
WITH_RETRAINbuild arg. Default image is ~60% smaller - Feature-gated SQLite —
sulcus-multimindSQLite module is now behind a feature flag, eliminating unnecessaryrusqlitedependency in server builds - Compile fix —
ModelConfigimport resolved forno-default-featuresbuilds
v2.9.1 — April 17, 2026
Theme: Organizations
- Keycloak 26 Organizations — full org management rewritten as a KC26 Organizations proxy. Create orgs, invite members, manage seats
- Invite throttling — rate-limited invitations with reinvite endpoint
- Enterprise unlimited seats — enterprise tier now gets unlimited seats with Stripe
max_seatsmetadata - Org UX improvements — reinvite, throttle UI, member display enhancements
v2.9.0 — April 14, 2026
Theme: Authentication & Identity
- Native registration — self-hosted registration flow without Keycloak hosted pages redirect
- Forgot password — complete password reset flow with email verification tokens
- 24h session timeout — sessions expire after 24 hours with background token refresh
- API key namespace decoupling — key labels no longer tied to namespace, uses
effective_namespace()for flexibility - Deploy script — standardized
deploy.shfor all server deployments
v2.8.0 — April 11, 2026
Theme: SIU Intelligence
- ONNX retrain pipeline — training signals accumulate from corrections, then retrain SIVU/SICU models via scikit-learn → ONNX export → hot-reload
- Training signals table —
record_signalAPI stores user feedback for continuous model improvement - Output evaluations — SILU recursive LM supervisor evaluates agent outputs for memory quality
- Per-agent feature gates — output evaluation and SIU config scoped per agent
- LLM-powered curator — GPT-5.4-nano powered memory consolidation — reclassify, merge, summarize stale memories automatically
v2.7.0 — April 9, 2026
Theme: Multi-Tenant Security
- Namespace ACL — per-agent, per-namespace access control (allow/deny policies). Default policy configurable per tenant
- Agent-scoped SIU config — override SIU classifier parameters per agent, not just per tenant
- Multi-key per tenant — tenants can now create multiple API keys with different labels and scopes
- OIDC tenant links — link Keycloak user IDs to tenant accounts for SSO-based auth
- FTS index — full-text search index on
golden_indexfor keyword queries alongside vector search - Temporal search — chrono-english powered time-aware semantic search ("what we discussed last week")
- Embed endpoint —
/api/v1/agent/embedfor external embedding provider contracts
Plugin v5.0.0 — April 8, 2026
Theme: Full Hook Integration (6 Phases)
Complete rewrite of the openclaw-sulcus plugin's hook system. 1,908 lines added across 16 files.
Phase 1: Foundation (v4.3.0)
before_prompt_buildrecall replaces deprecatedbefore_agent_start- Hot Context Layer —
/agent/hot-contextfor L0/L1 always-on memories every turn - Token budget enforcement — greedy fill with configurable limit
- Session lifecycle —
session_start,session_end,before_resethooks
Phase 2: Observation (v4.4.0)
llm_input— counts injected memories and token usage per turnllm_output— logs token economics, captures failure patternsmessage_received— classifies inbound as correction/preference/questionbefore_dispatch— dispatch telemetry
Phase 3: Volition (v4.5.0)
- Trigger-Hook Bridge — server-side triggers now flow back through the plugin
- Notification Buffer — circular buffer surfaces trigger notifications in context
- Tool Wiring —
memory_storeandmemory_recallauto-evaluate triggers - Session Telemetry — trigger fire counts logged on session_end
Phase 4: Compaction Mining (v4.6.0)
- Multi-type extraction — decisions (procedural), preferences (preference), facts (fact)
- Credential stripping — never extracts secret values
- Rich summaries — message count, time range, topic keywords
- Non-blocking — all stores via
Promise.allSettled
Phase 5: Graph Context (v4.7.0)
/agent/entity-contextendpoint — AGE graph entity lookup with 1-hop traversal- Entity extraction from recall results
- Context enrichment — entity connections injected alongside memories
Phase 6: Cross-Agent Bridge (v5.0.0)
memory_share— store memory in another agent's namespacememory_cross_recall— search another agent's memoriessharedNamespacesconfig — automatic cross-agent context injection- All cross-agent features disabled by default (opt-in)
v2.6.0 — April 7, 2026
Theme: Recall Intelligence
Four enhancements to how Sulcus ranks and returns memories, inspired by competitive analysis of emerging memory systems.
New: Hot Context Layer
POST /api/v1/agent/hot-context — returns the top memories without a search query. Memories are sorted by pinned → heat → recency. This is the "always on" context layer: the memories an agent should know about before any user interaction. Designed for the L0/L1 context pattern (~100-500 tokens, loaded every turn).
New: Keyword Overlap Boosting
Search results now receive a boost when exact words from the query appear in the memory content. Helps with proper nouns, project names, and technical terms that embedding similarity can under-rank. Configurable via recall.keyword_weight (default: 0.15).
New: Temporal Proximity Boosting
Queries containing time references ("yesterday", "last week", "last month", or specific dates) now boost memories from the matching time window. A question about "what we decided last week" surfaces memories from ~7 days ago, not the highest-similarity match from 3 months ago. Configurable via recall.temporal_max_boost (0.4) and recall.temporal_decay_days (7.0).
New: Namespace Ownership Signal
In multi-agent setups, memories from the querying agent's own namespace get a small boost over shared or cross-agent memories. Your own memories are slightly preferred, but cross-agent context is still accessible. Configurable via recall.namespace_boost (default: 0.1).
All scoring is tunable
All four enhancements are controlled through the existing thermodynamic config API (PATCH /api/v1/settings/thermo). Adjust per-tenant without redeployment.
v2.5.0 — April 7, 2026
Theme: Cold Storage + Graph Integration
Cold Storage as Static Importance
Archived memories are no longer "dead" — they're the bedrock layer. The cold tier represents static importance: permanently valuable facts that have settled into a stable state. They don't decay further because their importance is established. Always queryable via tier: "cold" on the search endpoint.
Archive-Aware AGE Graph
is_archivedboolean property on AGE Memory vertices distinguishes cold-but-alive from archived-and-done- Graph resonance excludes archived vertices to prevent zombie reactivation
- Orphan entity cleanup via two-pass approach (AGE-compatible)
- Cold-tier search merges pgvector similarity results with AGE graph entity traversal, deduped by node ID
Curator Integration
The consolidation/curator system now archives to the graph — when memories are archived, their graph vertices are updated simultaneously.
v2.4.0 — April 7, 2026
Theme: Tiered Search + Plugin Parity
Tiered Search
New tier parameter on search: hot (default, active memories), cold (archived only), all (everything). Cold storage queries combine pgvector with graph traversal for comprehensive archived memory search.
OpenClaw Plugin v4.2.0
Six new features for the openclaw-sulcus plugin:
- Deduplication — detects and rejects duplicate memories before storage
- Error capture — tool failures stored as episodic memories via
after_tool_call - Compaction capture — mines pre-compaction transcripts for memories worth persisting
- Session tracking — session lifecycle hooks wired
- Message hooks — full message pipeline (
received,sending,sent) - Markdown sync removed — no more flat-file mirroring. Cold storage is the archive.
v2.3.0 — April 6, 2026
Theme: Conflict Detection + Explainable Recall
- Conflict detection —
on_conflicttrigger event fires when contradicting memories are stored - Explainable recall —
explain: trueflag on search returns per-result scoring breakdown - Confidence levels — memories can be tagged with
verified,observed,stale, orcontradicted - Backfill utility — scores existing memories for
base_utilityquality gate
v2.2.0 — April 6, 2026
Theme: Interaction Decay + Entity Extraction
- Interaction decay — heat decays based on recall patterns, not just time
- Half-life backfill — existing memories receive type-appropriate half-lives
- SILU entity extraction — stores entities and relationships to the AGE knowledge graph
- Per-agent triggers panel — dashboard UI for managing triggers per namespace