True Recall
approvedby Lucas Piera
Anki-like native system in obsidian. Review flashcards with FSRS spaced repetition. - This plugin has not been manually reviewed by Obsidian staff.
True Recall
The next-gen spaced repetition system for Obsidian.
Create flashcards inside your notes, review them with FSRS v6 scheduling, and track progress with comprehensive analytics — all without leaving Obsidian.
Documentation · Pricing · Sponsor on GitHub

Features
- FSRS v6 Algorithm — State-of-the-art spaced repetition with 21 trainable parameters. Optimizes to your personal memory patterns after 400+ reviews.
- AI Card Generation — Select text, get instant flashcards. Supports Basic, Cloze, Reversed, and Image Occlusion card types. Multiple models via OpenRouter (Gemini, GPT, Claude, Llama).
- Local-First Storage — All data in a portable SQLite database inside your vault (
.true-recall/true-recall.db). Your data stays with you. - Projects System — Organize cards across notes with many-to-many relationships. Review by topic, inherit FSRS presets from parent projects.
- Anki Compatible — Import
.apkgdecks and export to Anki or CSV/TSV. - Analytics & Widgets — Dashboard, statistics, calendar heatmap, forecast charts, and 25+ inline codeblock widgets you can embed in any note.
- Card Browser — Powerful query syntax for finding cards by state, properties, source note, and more.
- Type-in Mode — Type answers with AI semantic grading or diff-based checking.
Installation
Via BRAT (Recommended)
- Install BRAT from Obsidian Community Plugins
- Settings → BRAT → Add Beta Plugin → enter
pieralukasz/true-recall - Enable True Recall in Settings → Community plugins
Manual
- Download the latest release from GitHub Releases
- Copy
main.js,styles.css, andmanifest.jsoninto<your-vault>/.obsidian/plugins/true-recall/ - Enable the plugin in Settings → Community plugins
From Source
git clone https://github.com/pieralukasz/true-recall.git
cd true-recall
bun install
bun run build
cp main.js styles.css manifest.json <your-vault>/.obsidian/plugins/true-recall/
Requirements
- Obsidian 1.7.2+
- Desktop (Windows, macOS, Linux). True Recall is marked desktop-only in
manifest.json.
Quick Start
- Open a note and select some text
- Use the selection toolbar to generate flashcards with AI
- Open the Flashcard Panel to see and collect your cards
- Start a review session — rate cards as Again, Hard, Good, or Easy
- Track progress in the Statistics view or embed widgets in your notes
For a complete walkthrough, see the documentation.
Privacy & Background Activity
True Recall is local-first. It does not send telemetry or analytics. Network access is limited to the explicit feature paths below.
Periodic timers (setInterval) — all local, no network:
- Database safety-flush — writes pending changes to the local SQLite file in your vault.
- Optional background backup — writes a backup file inside your vault when enabled in settings.
- Device-lock heartbeat — updates a small lock file inside your vault to prevent two Obsidian Sync clients from corrupting the database when both are open. Local file write only.
- UI status polling — reads in-memory state to refresh diagnostics/backup panels.
Network requests — only on explicit user action or one-time per release:
- Update check — when the plugin version differs from the last seen version, a single
requestUrlcall is made to the GitHub Releases API to fetch release notes. Runs once per version, not on a timer. - AI features (opt-in) — flashcard generation, semantic grading, and image-occlusion detection require a configured AI provider. Depending on settings, requests can go to OpenRouter,
ai.truerecall.appfor True Recall Pro, a local LM Studio/Ollama endpoint, or a custom OpenAI-compatible endpoint you enter. - Local API server (desktop, opt-in) — binds to
127.0.0.1only, used by the optional companion CLI and MCP server. It is disabled by default and does not expose a public network listener. - External links — documentation, pricing, sponsorship, Discord, and Anki shared-deck links are opened only when you click UI links.
Storage: All flashcards and review data live in .true-recall/true-recall.db inside your vault. Backups and lock files live in the same .true-recall/ folder. Device identity and optional device labels use localStorage so multiple synced devices can avoid database conflicts.
Vault and clipboard access:
- Vault reads/writes are core to the plugin: True Recall reads selected/current notes, creates or updates notes for projects/imports, and stores its SQLite database and backups inside the vault.
- Vault enumeration is used for note pickers, project discovery, media lookup, and export/import.
- Clipboard writes happen only from explicit copy actions. Clipboard paste/drop handlers are used only in image/media workflows initiated by the user.
Bundled runtime components:
- The plugin embeds
@sqlite.org/sqlite-wasmso SQLite works locally in Obsidian. This is the expected.wasmmodule in the bundle. - Base64 encoding is used to pass selected vault images to configured AI vision providers for image-occlusion region detection. It is not used to hide network destinations or source strings.
License
Source-available under the PolyForm Strict License 1.0.0
(SPDX: PolyForm-Strict-1.0.0).
Permitted: noncommercial use, including personal study, research, hobby projects, and use by charitable / educational / public-research / government organizations. Fair-use rights are preserved.
Not permitted under this license: redistribution, modification and derivative works, commercial use, hosting as a service, or building a competing product.
Commercial licensing. A separate commercial license is required for any
use beyond what PolyForm Strict allows — including production deployments
inside a business, paid services built on True Recall, or distributing
derivative works. Contact pieralukasz@gmail.com to discuss terms.
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.