Release history
kael-bit/engram-rs releases
Hierarchical memory engine for AI agents with automatic decay, promotion, semantic dedup, and self-organizing topic tree. Single Rust binary, zero external dependencies.
All releases
16 shown
v0.14.0
Breaking risk
Breaking changes
- `rerank` field removed from `RecallRequest`
- Global audit replaced with focused topic distillation (condenses overlapping entries when a topic reaches 10+ memories)
- Sandbox functionality removed
Notable features
- Episodic Core block: episodic memories cannot be promoted to Core (enforced at collection and DB level)
- Web UI split into `index.html`, `style.css`, and `app.js` for easier maintenance
- Sort by weight added to web UI memory list with four modes (Newest, Oldest, Weight ↓, Weight ↑)
Full changelog
Breaking Changes
- Rerank removed —
rerankfield removed fromRecallRequest. LLM re-ranking was default-off and unnecessary; FTS + semantic scoring is sufficient. Reduces recall latency. - Audit → Topic Distillation — old three-powers global audit replaced with focused topic distillation. When a topic grows to 10+ memories, overlapping entries are condensed into fewer, richer ones. More efficient, fewer wasted LLM calls.
- Sandbox removed — no longer needed with the simpler distillation model.
New Features
- Episodic Core block — episodic memories can never be promoted to Core. Enforced at both candidate collection and DB level.
- Web UI split — single 1300-line
index.htmlsplit intoindex.html+style.css+app.js. Easier to maintain and read. - Sort by weight — web UI memory list supports 4 sort modes: Newest, Oldest, Weight ↓, Weight ↑. Uses the same
memory_weight()formula as recall scoring.
Improvements
- Centralized prompts — all LLM prompts and JSON tool schemas in
src/prompts.rs - Centralized thresholds — all 60+ magic numbers from 15+ files in
src/thresholds.rs - Epoch-based decay — decay only during active consolidation, not wall-clock time
- Buffer redesign — all new memories enter Buffer; promotion requires consolidation
- Reconcile merge — auto-detects same-topic memories where newer supersedes older
- ~1400 lines removed net across refactoring and feature removal
v0.13.0
Breaking risk
Breaking changes
- /recall and /triggers now return clean MemoryResult (id, content, score, layer, tags, kind only — internal fields removed)
- Working memories are never deleted or demoted to Buffer
Notable features
- Unified scoring via new memory_weight() function with additive formula
- Activity‑driven consolidation skips when no write activity since last run
- Gate improvements: promotion gate batches candidates into a single LLM call and adds _gate-pending cooldown tag
Full changelog
Breaking Changes
/recalland/triggersnow return cleanMemoryResult(id, content, score, layer, tags, kind only — internal fields removed)- Working memories are never deleted or demoted to Buffer
Unified Scoring
- New
memory_weight()function used across all ranking contexts - Additive formula:
(importance + rep_bonus + access_bonus) × kind_boost × layer_boost - Importance floor changed from 0.3 to 0.0 — memories with high repetition/access stay discoverable even at zero importance
- Recall weights: 0.5 relevance + 0.3 weight + 0.2 recency
Activity-Driven Consolidation
- Consolidation loop skips when no write activity since last run — zero waste during idle periods
- Audit loop follows the same pattern
- Agent frozen = system frozen. No phantom decay while inactive.
Gate Improvements
- Promotion gate now batches all candidates into a single LLM call (was per-item)
_gate-pendingcooldown tag prevents retry storms on LLM errors (2h TTL)- Triage dedup via
_triagedfilter
Memory Protection
- Working layer: importance decays to 0 but memory persists — findable via recall and topic tree
- Buffer: still evictable when over capacity
- Core: unchanged (permanent)
Full Changelog: https://github.com/kael-bit/engram-rs/compare/v0.12.2...v0.13.0