Spaced repetition, in your terminal
npm install @shaankhosla/repeatrepeat is a command-line flashcard program that uses spaced repetition to boost your memory retention. It’s like a lightweight, text-based Anki you run in your terminal. Your decks are kept in Markdown, progress is tracked in SQLite, and reviews are scheduled with Free Spaced Repetition Scheduler (FSRS), a state-of-the-art algorithm targeting 90% recall.


- Cards live in .md files, so edit them using your favorite markdown editor, back them up with version control, and let them live alongside regular notes.
- Progress is tracked with a hash of the card content, so edits automatically reset their progress.
- Free Spaced Repetition Scheduler (FSRS), a state-of-the-art algorithm targeting 90% recall, automatically schedules reviews for you.
- Terminal UX: repeat drill renders cards with ratatui; repeat create launches an editor dedicated to card capture; repeat check displays progress at a glance.
- Inline media support: reference local images/audio/video inside your decks and open them from a drill session without leaving the terminal.
- Import from Anki: convert .apkg exports into Markdown decks with repeat import so you can bring your existing collection along.
Installation, quick-start, and usage guides now live in the documentation.
```
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/shaankhosla/repeat/releases/latest/download/repeat-installer.sh | sh
``
brew tap shaankhosla/homebrew-tap
brew install repeat
``
irm https://github.com/shaankhosla/repeat/releases/latest/download/repeat-installer.ps1 | iex
``
npm install @shaankhosla/repeat
1. Create a deck in Markdown (cards/neuro.md):
`markdownrepeat
You can put your normal notes here, will ignore them.
Once a "Q:,A:,C:" block is detected, it will automatically
turn it into a card.
Q: What does a synaptic vesicle store?
A: Neurotransmitters awaiting release.
---
Use a separator to mark the end of a card^
Then feel free to go back to adding regular notes.
C: Speech is [produced] in [Broca's] area.
`
2. Index the cards and start a session:
``
repeat drill cards
- Space/Enter: reveal the answer or cloze.O
- : open the first media file (image/audio/video) referenced in the current card before revealing the answer.1
- : mark as Fail, 2: mark as Pass.Esc
- or Ctrl+C`: end the session early (progress so far is saved).