Evidence-based learning engine — first-principles curricula, free-recall verification with receipts, FSRS-scheduled memory, and explorable artifacts. Learn anything; keep it.
> /plugin marketplace add nagisanzenin/engram> /plugin install engram@engram
What's inside
The mix-up worth clearing first: Engram is not an agent-memory plugin. It doesn't give your agent persistent memory, context, or knowledge of your codebase — memory MCPs and context tools do that, for the agent. Engram points the other way: it's a learning system for the human. Your agent becomes a tutor that makes you do the thinking, a blind examiner that checks you actually got it, and a scheduler that brings each idea back right before your brain drops it. The agent doesn't get smarter. You do — measurably, with receipts.
Born as a Claude Code plugin; the same skills and engine now run on nine agentic platforms — including, as of v1.0.8, one that puts the tutor in your chat app, and, as of v1.12.0, both OpenCode generations (the 2.0 beta rebuilt its plugin API; Engram ships adapters for both in one package):
claude plugin marketplace add nagisanzenin/engram
claude plugin install engram@engram
| Platform | Install | Then |
|---|---|---|
| Claude Code (born here) | the two commands above | /learn /review /coach |
| OpenAI Codex | codex plugin marketplace add nagisanzenin/engram then codex plugin add engram@engram → INSTALL-CODEX.md | $learn $review $coach |
| OpenCode (v1 + 2.0 beta) | "plugin": ["opencode-engram-learning"] in opencode.json (npm); opencode2 → INSTALL-OPENCODE-V2.md | /learn /review /coach |
| Hermes Agent | clone + skills.external_dirs → INSTALL-HERMES.md — verified live on v0.18.2 | /skill learn (or /study) /review /coach |
| Google Antigravity | agy plugin install https://github.com/nagisanzenin/engram | /learn /review /coach |
| OpenClaw | openclaw plugins install engram --marketplace nagisanzenin/engram → INSTALL-OPENCLAW.md — verified on 2026.7.1-2 | /learn /review /coach |
| Pi | pi install git:github.com/nagisanzenin/engram → INSTALL-PI.md — verified on 0.83.0 & 0.74.2 | /learn /review /coach |
| DeepSeek Harness | clone + 3 symlinks → INSTALL-DSH.md — no adapter code, all stock dsh surfaces; verified on 0.1.0-rc.6 | /learn /review /coach |
| ZCode | Settings → Plugin Management → Discover → add github.com/nagisanzenin/engram → INSTALL-ZCODE.md — verified against 3.9.2 | /learn /review /coach |
OpenCode: opencode.json is read globally (~/.config/opencode/opencode.json) or per-project; pin to source instead of npm with "plugin": ["git+https://github.com/nagisanzenin/engram.git"]. OpenCode 2.0 beta (opencode2) uses a new plugin API — same package name works there too (V2 auto-selects the right adapter): INSTALL-OPENCODE-V2.md.
Antigravity: The due-review session nudge isn't ported yet, and the architect and smith subagents are currently dropped by AG 1.1.4's strict installer. Everything else works the same.
OpenClaw: the nudge needs openclaw config set hooks.internal.enabled true (OpenClaw ignores plugin hooks until internal hooks are switched on), and it fires on /new and /reset rather than every session. Engram's agents aren't registered — the skills spawn them through sessions_spawn with isolated context instead, which keeps the assessor blind. Details in INSTALL-OPENCLAW.md.
DeepSeek Harness: developer preview — the port uses only stock dsh capabilities (native ~/.agents/skills discovery, the Claude Code hook bridge for the nudge), so harness drift degrades a surface rather than crashing. Needs a DeepSeek API key. Skills-in-session and the full nudge chain are verified on the real runtime; a model-driven session is not yet — first-run reports welcome. Details in INSTALL-DSH.md.
ZCode: Claude Code-compatible plugin surfaces, so the port is manifest + one hook-format switch + docs. ZCode discards plain SessionStart stdout and logs non-JSON runs as failed — so the shared hook script detects ZCode's plugin context (ZCODE_PLUGIN_ROOT) and emits the JSON shape that runner parses; on every other platform it prints plain text exactly as before. The blind assessor runs as a fresh-context generic Agent child; declared plugin agents are diagnostic-only in ZCode 3.9.2. A live model-driven session is not yet recorded — first-run reports welcome. Details in INSTALL-ZCODE.md.
Pi: no subagent tool by design — the skills spawn the blind assessor as a fresh pi -p process instead (isolation by process boundary). The nudge is one TUI notice at session start plus one injected message on your first prompt (worst case the next one — the probe never blocks startup). Details in INSTALL-PI.md.
Then, inside your coding assistant (command spelling per your platform's row above):
/learn kalman filters ← or music theory, or Rust lifetimes, or anything
That's the whole onboarding. No config, no account, no cards to write. Requires python3 (stock macOS/Linux one is fine — stdlib only). One state folder, every platform: learn in one tool, review in another, same schedule.
You already ask Claude to explain things. It explains beautifully. You nod, you feel smart, and ten days later it's gone — because a chat has no memory of you, no test of whether you really got it, and no plan for the forgetting that starts the moment you close the terminal.
Engram is what's missing around the explanation: a tutor that makes you do the thinking, an examiner that checks you actually got it, and a scheduler that brings each idea back right before your brain drops it.
| Engram is | Engram is not |
|---|---|
| a learning system for the human — you end up knowing things | agent memory — tools that persist what the agent knows (different job entirely) |
| a tutor that makes you produce answers before it explains | a chatbot that explains while you nod along |
| a memory system — every concept gets a future review date | notes and summaries you'll never reopen |
| an independent examiner that grades you blind, in writing | self-assessed "yeah, makes sense" |
| plain JSON files on your machine | a cloud service, account, or subscription |
Concretely, installing it gives you: three commands (/learn, /review, /coach — exact spelling per platform in the table above), a quiet session nudge that tells you when reviews are due (and says nothing otherwise — on every platform except Antigravity, whose hook port is pending; on OpenClaw it needs one config flag and fires on /new), and a state folder at ~/.claude/learning/ that you own, can read, and share across every platform you use.
recall
100% ─┐ just reading 100% ─┐ with engram
│\ │\ ●╌╌╌●╌╌╌╌╌●╌╌╌╌╌╌╌●╌╌
│ \ │ \ ╱ ╲╱ ╲╱
│ \__ │ ●──╱
│ \____ │
│ \_______ │ each ● = a 2–4 minute /review,
0% ─┴──────────────────── day 30 0% ─┴─ booked just before you'd forget
YOU ──→ /learn transformers
│
▼
┌────────────────────────────────────────────────────────────────┐
│ CURRICULUM ARCHITECT │
│ breaks the topic into a first-principles concept map: │
│ "what must be understood before what" — never chapter order. │
│ flags the few THRESHOLD concepts † that unlock everything. │
└────────────────────────────────────────────────────────────────┘
│
▼
┌────────────────────────────────────────────────────────────────┐
│ THE TUTOR (your normal Claude chat, under strict rules) │
│ │
│ per concept: open a question → you PREDICT → struggle a │
│ little (hints, not answers) → resolve → you EXPLAIN IT BACK │
│ │
│ threshold concepts get a generated interactive HTML │
│ explorable — sliders and prediction gates, not more text. │
└────────────────────────────────────────────────────────────────┘
│ your answers, verbatim (crash-safe stash on disk)
▼
┌────────────────────────────────────────────────────────────────┐
│ THE ASSESSOR (separate agent — grades blind) │
│ sees only the rubric and your words, never the lesson. │
│ every grade becomes a receipt on disk. no receipts, │
│ no mastery claim. │
└────────────────────────────────────────────────────────────────┘
│ receipts
▼
┌────────────────────────────────────────────────────────────────┐
│ THE SCHEDULER (engram.py — deterministic code, not vibes) │
│ FSRS-4.5 fits your personal forgetting curves and books │
│ each concept's next review just before you'd lose it. │
└────────────────────────────────────────────────────────────────┘
│
▼
next session: [engram] 6 reviews due (transformers: 6) · ~4 min
│
├──→ /review 2–4 minutes of free recall
└──→ /coach weekly: stats · dashboard · tuning
From the first live topic taught with Engram (transformer internals). Note who does the thinking:
◆ node 6/13 · nonlinearity-necessity †
engram Delete σ for a second. The FFN is now just W₂·(W₁·x).
What is W₂·W₁ — and what has the two-layer FFN collapsed into?
you i dont know really
engram Fine — that's a commitment. Forget matrices. W₁ = "×2",
W₂ = "×3". Run a number through both, nothing in between.
Two steps of computation… or secretly one?
you basically 2x3
engram That's the whole secret, and you just said it. ×2 then ×3 = ×6:
two linear layers fuse into ONE. Fifty of them? Still one matrix.
Depth means nothing until a nonlinearity blocks the fuse —
and that's why σ is not optional.
FAQ
nagisanzenin-engram is a Claude Code plugin with 3 hand-picked skills for productivity work, indexed on Flowy. Install it with the command on its page. It includes coach, learn, review. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it