v2.2.0 — SQLite Default Backend
What's New
SQLite is now the default storage backend. Zero-config, ACID guarantees, WAL mode. LanceDB stays for vector search. No Docker, no TypeDB, no external services required.
Highlights
- SQLite default backend —
StorageBackendABC (33 methods),SQLiteBackend(700+ lines), backend factory with auto-detection. Migration script for existing JSONL data. - Causal chain retrieval — Fixed critical bug where all LLM-extracted causal edges were invisible. Added reverse traversal for "why did X happen?" queries.
- Memory Evolution active — A-Mem inspired neighbor evolution now auto-triggers after
remember(). Background enrichment queue finds top-k neighbors and LLM decides if they should evolve. - STIX 2.1 taxonomy — APT/UNC/TA/FIN groups correctly stored as
intrusion_set.recall_actor()backward-compatible. - Web hardening — API key auth, localhost-only default, XSS fix, rate limiting.
- Spec-driven governance —
governance/controls.yamlmanifest + drift detection tests catch phantom CI controls. - LangChain integration —
ZettelForgeRetrieverfor LangChain pipelines. - CTIBench ATE — F1 improved from 0.0 to 0.146.
Upgrade
pip install --upgrade zettelforgeExisting JSONL users can migrate:
python scripts/migrate_jsonl_to_sqlite.py --data-dir ~/.amemFull Changelog
See CHANGELOG.md for complete details.
🤖 Generated with Claude Code