It remembers the reasons
A decision is stored with its reasoning, and so are the options you rejected. When someone asks why you don't use Redis, the answer comes from the record.
Decisions, pitfalls, principles and session notes, stored in your repo and served to Claude Code, Cursor or any MCP client.
One minute of real output. The narration is synthetic.
Below is the example project in examples/adr-demo, which has three ADRs about where to keep sessions.
$ npx @vefimov/engram init ✔ Created .engram/ in ~/code/shop ✔ Claude Code: .mcp.json, CLAUDE.md, 6 skills ✔ Indexed in 66 ms — 3 ADRs, 1 commits, 0 hotspots, 0 possible pitfalls $ engram why sessions ↩️ ADR-0001: Cache sessions in Redis (superseded) Context: Login latency is dominated by the session lookup in Postgres. Decision: Store sessions in Redis with a 30-day TTL. ❌ ADR-0002: Store sessions in MongoDB (rejected) Rejected: no transactions spanning sessions and the orders table. ✅ ADR-0003: Keep sessions in Postgres (active) Sessions live in Postgres with an hourly cleanup job. dec_edkgurku —supersedes→ dec_40bmzazh
Then restart your agent and tell it "use engram". It gets a briefing at the start of each task, checks plans against old mistakes, records decisions as they happen, and leaves a note for the next session.