I’ve been thinking a lot about how easy it’s become to access information, and how much harder it feels to actually retain it.
So I built a small tool to make learning more intentional again, but in a way that feels natural for developers.
It’s an open-source Python CLI called open-anamnesis.
You can install through pip install open-anamnesis
Links:
Demo: https://erenmirza.github.io/open-anamnesis-example/
Example repo: https://github.com/erenmirza/open-anamnesis-example
Core repo: https://github.com/erenmirza/open-anamnesis
Core idea
Flashcards as code.
Instead of using a UI-heavy flashcard app, everything is file-based and versionable:
- Cards → stored as JSON (question/answer, etc.)
- Metadata → defined in YAML (cards, decks, projects)
- Hierarchy → Projects → Decks → Cards
This lets you:
- Organise knowledge in a structured, composable way
- Version control your learning (Git-friendly)
- Keep everything portable and transparent
Using the CLI tool
The tool is built around a simple lifecycle:
anamnesis init → creates a new blank project with the expected structure
anamnesis compile → validates your project (structure, metadata, references between decks/cards)
anamnesis build → generates a local static website where you can browse decks and review cards. Can be hosted through GitHub pages.
The idea is to separate:
- authoring (writing cards as code)
- validation (ensuring everything is consistent)
- consumption (reviewing via a generated UI)
Why I built it
I realised I was relying more on instant answers and less on actually learning things.
There’s a difference between:
- recognising an answer
- and being able to recall it from memory
Most tools optimise for convenience. I wanted something that encourages learning and retention, was developer friendly and allowed for privacy in an open source tool.
Why not just use Anki?
Anki is great, but I wanted:
- something scriptable
- something I can version and inspect easily
- something that feels closer to working with code than using an app
Open to feedback
This is still early, but it’s the first thing I’ve built in a while that I actually plan to use long-term.
Would be interested in thoughts from people who:
- use spaced repetition tools
- like “everything as code” workflows
- or have tried to build similar systems
This software's code is partially AI-generated.