Skip to content

v2.2.0 — SQLite Default Backend

Choose a tag to compare

@rolandpg rolandpg released this 16 Apr 14:33
· 192 commits to master since this release

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 backendStorageBackend ABC (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 governancegovernance/controls.yaml manifest + drift detection tests catch phantom CI controls.
  • LangChain integrationZettelForgeRetriever for LangChain pipelines.
  • CTIBench ATE — F1 improved from 0.0 to 0.146.

Upgrade

pip install --upgrade zettelforge

Existing JSONL users can migrate:

python scripts/migrate_jsonl_to_sqlite.py --data-dir ~/.amem

Full Changelog

See CHANGELOG.md for complete details.


🤖 Generated with Claude Code