I kept running into the same problem while learning: I'd jump into an advanced topic, realise I was missing prerequisites, then forget the basics I'd just learned.

Flashcard apps didn't understand dependencies. Note apps didn't schedule reviews. Then I stumbled upon this open-source CLI and it's the first tool that seems to get both problems at once.

It's called PALEE — Personal Active Learning & Evaluation Engine. It lives inside your Obsidian vault and tells you what to study next.

GitHub: https://github.com/Kuldeep2822k/cli

What it does

Your vault is the database. No separate DB, no sync headaches. Study state lives in frontmatter:

--- palee_schema: 1 palee_id: T-docker-volumes title: "Docker Volumes" depends_on: - T-docker-basics topic_mastery: 0.725 ease_factor: 2.36 interval_days: 6 due_at: 2026-01-21 --- 

Then:

npm install -g @kuldeep2822k/palee palee config set-vault ~/Documents/Obsidian/Learning palee adopt "Docker Fundamentals.md" palee next # → Learn: Pod Lifecycle in Kubernetes palee progress # → overall mastery, repetitions, what's due 

Three ideas make it work:

1. Deterministic core
SM-2 spaced repetition + a DAG for dependencies. When it says "study this next," you can trace why — what's due, what it unlocks, what depends on it. The optional AI tutor (any OpenAI-compatible endpoint) only does Feynman-style testing; it isn't the scheduler.

2. Dependency-aware, not just due-date aware
Never study something before its prerequisites. Roadmap imports are validated as a DAG, offline, no network needed.

3. Session continuity
Every session is saved as an Obsidian note, plus a compact hot-memory file. Next time you run palee session start, it resumes where you left off.

The bit that sold me: --auto-chain + wikilinks

palee adopt --auto-chain palee roadmap --auto-chain 

It resolves [[wikilinks]] in your notes into real dependencies. Write naturally in Obsidian, get a proper learning graph for free.

Apparently this was trickier than it sounds:

  • Independent ## Track sections kept getting merged into one mega-chain — fixed by scoping chaining per-track
  • Nested folders sorted wrong (01-foundations/03-extras vs 02-linux) — fixed by comparing full path segments
  • Had to make sure [[diagram.png]] never gets frontmatter written into it

Under the hood

  • TypeScript + Node 22, Commander for the CLI, YAML frontmatter for storage
  • Hand-rolled SM-2 + DAG engine (no black box)
  • Atomic writes + file locking, so it survives concurrent Obsidian edits, on Windows and Unix paths
  • 982 tests across 161 suites — including fuzz, fault-injection, and timezone tests, because spaced repetition across timezones is sneaky

Docs: https://kuldeep2822k.github.io/cli/

Try it

npm install -g @kuldeep2822k/palee 

It's MIT-licensed. If you use Obsidian for learning, run palee next on your vault and see if the recommendation makes sense. And if it does, a star on GitHub helps small projects like this get discovered: https://github.com/Kuldeep2822k/cli

What are you using to track learning right now? Curious what's worked for you.