Zen
A spaced repetition CLI for active recall using the FSRS algorithm.
Features
- Simple card creation: Create flashcards directly from the command line
- Question-answer format: Focus on what matters - questions and answers
- FSRS algorithm: Uses the modern Free Spaced Repetition Scheduler for optimal learning
- Interactive review sessions: TUI-based review with real-time interval previews
- Fuzzy search: Find and edit cards with interactive fuzzy matching
- CLI-first: All interactions through the terminal
- Easy editing: Cards stored as simple markdown files
- Efficient storage: Hybrid approach with markdown for content and SQLite for scheduling
Installation
Or clone and build from source:
Usage
Create a new card
You'll be prompted to enter the answer (multi-line supported). Press Enter twice to finish.
Find and edit cards
Opens an interactive fuzzy finder. Type to filter cards, use arrows/Tab to navigate, press Enter to edit in your default editor.
Start a review session
Reviews all cards that are due:
- Press
SpaceorEnterto reveal the answer - Rate your recall:
1(Again),2(Hard),3(Good),4(Easy) - Each rating shows the next review interval (e.g., 10m, 3d, 8d, 21d)
- Progress indicator shows your position (Card 3/10)
- Summary statistics displayed at the end
Future commands (coming soon)
Card Storage
Cards are stored in ~/.zen/:
- Content:
~/.zen/cards/*.md- Simple markdown files - Metadata:
~/.zen/zen.db- SQLite database for scheduling
Card Format
Cards use a minimal format:
What is your question?
---
This is the answer.
Everything before \n\n---\n\n is the question, everything after is the answer.
Roadmap
- Phase 1: Basic card creation and storage
- Phase 2: Fuzzy search and editing with TUI
- Phase 3: Review sessions with FSRS scheduling
- Phase 4: Statistics and polish
- Phase 5: Import/export and advanced features
See DESIGN.md for detailed feature planning.
How Reviews Work (FSRS)
Zen uses the FSRS (Free Spaced Repetition Scheduler) algorithm to optimize your review schedule:
- New cards start with short intervals (minutes to days)
- Each rating updates the card's memory parameters:
- Stability: How long the memory lasts
- Difficulty: The card's inherent difficulty
- Retrievability: Your current memory strength
- Next review date is calculated to maintain 90% retention probability
- Four rating options:
1 - Again: Failed recall (review soon, ~10m)2 - Hard: Difficult recall (~3d)3 - Good: Correct with effort (~8d)4 - Easy: Perfect recall (~21d)
Intervals shown are examples for new cards. The algorithm adapts based on your actual performance history.
Design Principles
- No full-screen interfaces: All TUIs are max half-terminal height
- Vim-like navigation: Ctrl+j/k for movement
- No quotes needed: Natural command syntax
- Easy editing: Edit cards in your favorite editor
- Non-invasive: Minimal, focused interface
Development
Build
Test
Run
License
Licensed under either of Apache License, Version 2.0 or MIT license at your option.