Farhad Al Marzook24 downloadsStudy Anki-style flashcards written inside your notes, with FSRS scheduling, real card backs, one-by-one reveals, image occlusion, deck import, and full mobile support.
Anki-style flashcards that live inside your Obsidian notes. Write a card as a line in a note, study it with one-key grading and FSRS scheduling, and keep notes and cards in one place on the computer and the phone.

What it does
This is the reason Osteon exists. A flashcard holds one fact, and the note it came from holds the explanation. When a card is hard, press N and the note opens beside the card, scrolled to the line the card was written on. Read around it, then carry on reviewing.

note:"..." works in Browse and filtered decks.Link any note to any card. If a card keeps sending you back to the same note, tie them together: in a review, open the ⋯ menu and choose Link a note to this card. From then on N opens that note from that card, and it leads the Related row. It works on every card, including cards from an imported deck, and the link follows the note if you rename or move it. Unlink from the same menu.
The picker first offers the notes that look related to the card. Type to search: titles, aliases and headings, with the words in any order. If you have the Omnisearch plugin, the picker uses it and searches inside your notes too.
Imported decks work differently. A card from an imported deck was not written in one of your notes, so there is no source note for N to open. Instead N opens a note you linked to the card, or else a note of yours that the card names. If there is none, it tells you so and opens the deck's own card file. The AI helper can also point you to the right note: it lists the notes of yours it judges relevant under each explanation. The cards you write in your own notes always open the exact line.
Add #flashcards to a note (or list its folder in settings). Then write:
The most commonly torn rotator cuff tendon is ==supraspinatus==.
Tested with the empty can (Jobe) test.
Which nerve supplies supraspinatus and infraspinatus? :: Suprascapular nerve
The rotator cuff muscles are {{c1::supraspinatus}}, {{c1::infraspinatus}}, {{c1::teres minor}} and {{c1::subscapularis}}.
![[rotator-cuff.png]]
The first line is the front. The lines under it are the back, shown only after you answer, so the
explanation never has to be squeezed into the blank. Pictures, links, lists and math work on either
side. Three styles are understood: ==highlight== clozes, {{c1::answer::hint}} clozes, and
Question :: Answer (::: makes a reversed pair too). A deck is the note's folder, or a
#flashcards/deck/subdeck tag.

The full syntax is in docs/claude-code-skill/SKILL.md, which
also works as a Claude Code skill for writing cards. Add card (A) writes a card into a note for
you, and Osteon: Migrate from Spaced Repetition… converts cards from the Spaced Repetition
plugin and keeps their schedules.
Open the deck list from the ribbon icon or Osteon: Open decks. Space shows the answer, then 1 Again · 2 Hard · 3 Good · 4 Easy.

Every key can be changed in settings. Scheduling is FSRS, and a deck's parameters can be optimised from your own history.
A game controller works too.
Osteon runs inside Obsidian mobile, so there is no second app and nothing to export. The same notes, cards and review history are on the phone as soon as your vault syncs (iCloud or Obsidian Sync).

A card that asks for two or more answers hides each one behind a 🦴 and reveals them one at a time, so a list is recalled item by item instead of all at once. N or Space reveals the next, a click reveals that one, and comma reveals all. The bone button above a card switches it on or off for that card.

Put a picture on a line of its own, right-click the line and choose Create image occlusion. Draw rectangles, ellipses or polygons over the labels. Each box, or group of boxes, becomes a card. Hide all, guess one suits labelled diagrams and Hide one, guess one suits X-rays.

In review, tap the figure to zoom and press T to uncover every box. In the note, the figure still shows, with an Edit occlusion button. Renaming the image updates the figure.
The gear next to a deck opens its options: presets shared between decks, new and review limits, learning steps, leech threshold, display order, burying, timers and FSRS parameters. Decks can be renamed or hidden from the same menu.
Stats has graphs for Today, Future Due, Calendar, Reviews, Card Counts, Intervals, Stability, Difficulty, Retrievability, Hourly, Answer Buttons, Added and True Retention. The year heatmap and streaks also sit under the deck list; click a day to browse its cards.

Browse takes searches such as deck:Anatomy is:due, tag:high-yield,
flag:1, prop:ivl>30 or rated:7, plus is:onebyone, front:word and A or B. Select cards to
suspend, flag, reschedule or switch them to one-by-one in bulk.

*.exammap.json table, enter the questions you
missed on a practice exam and study the notes behind them.After you reveal a card, medical terms are underlined. Hover on the computer, or tap on the phone, to see a short definition without leaving the card.

Definitions come from, in order:
Flashcards/glossary/My terms.md (command Open My terms).Everyday words aren't underlined. Underlines on the front of a card are off by default, because a definition can give away the answer.
Pick a provider in settings, add your own API key and the model's name (filled in for you with Claude and Gemini), then turn on Use AI. Anthropic (Claude), OpenAI, Google Gemini and OpenRouter are built in, and Other takes any service that accepts OpenAI-style requests, including a model running on your own computer (Ollama, LM Studio).
AI helper panel. Press H during a review, or the sparkle button above the card, and a panel opens beside the card. Explain this card tells you why the answer is what it is and gives a memory hook. Then ask anything else about the card in the box below.

Also:
AI answers can be wrong, including about medicine. Treat them as a study aid and check anything you will rely on; the panel says so too.
For hard terms, new cards are looked at in small batches in the background (this can be turned off). Bigger runs always ask first.
Run Osteon: Import deck (.apkg)…, or press Import deck under the deck list, and pick the
file. It works for shared .apkg decks and for your own exports (tick "Include scheduling
information" when exporting to keep your history).
A preview shows what's inside. The deck is then written into the vault as notes, one per sub-deck, with its pictures beside them, and old image-occlusion notes become real occlusion figures. If the export included review history, cards keep their exact memory state.
Importing a newer version of the same deck only adds the new notes, or, with Update cards imported before, rewrites the old ones and keeps their history (never cards you edited in Obsidian). Very large decks with gigabytes of media are best imported on a computer.
Osteon ships no decks. Bring your own.
obsidian://osteon and obsidian://osteon?study.> [!card] callout if you prefer them boxed.app.plugins.getPlugin("osteon").api provides:
registerReviewDecorator(fn)on("cardShown" | "answerShown" | "answer" | "sessionEnd", cb)cards(search), cardState(key), history(key)suspend, unsuspend, bury, reset, flag and setDueSee src/plugin/api.ts.
In Obsidian, go to Settings → Community plugins → Browse, search for Osteon, then install and enable it. If your vault syncs its settings folder (iCloud or Obsidian Sync), enable it on the phone too.
To install by hand, download main.js, manifest.json and styles.css from the
latest release into <your vault>/.obsidian/plugins/osteon/.
Recommended: Settings → Files and links → Excluded files, then add Flashcards/reviews so the
review logs stay out of search and the graph.
Review history lives in Flashcards/reviews/<device>/<month>.md. Each device writes only its own
files, so a sync service never has to merge them.
Osteon has no telemetry, no ads and no account. It contacts the internet in two cases only, both started by you:
nlmpubs.nlm.nih.gov): when you press Download for the medical-term hover,
it fetches the National Library of Medicine's public MeSH vocabulary. Nothing is sent.Files outside the vault are read in two cases, both started by you: the .apkg file you pick to
import, and (desktop only) Copy deck pictures into the vault, which reads the media folder of the
flashcard app profile you choose so that imported cards get their pictures.
Your API key is kept in Obsidian's secret storage on that device. The optional Sync the key
switch (off by default) also writes it, in plain text, to api-key.json in the plugin's folder so
your other devices pick it up. Leave it off if your vault is shared or public.
npm install
npm test # parser, scheduler/replay, queue, and data-layer integration tests
npm run build # typecheck + bundle to main.js
Tests use a throwaway sample vault in test/fixtures/vault/ and an in-memory mock of the
Obsidian API (test/mocks/obsidian.ts).
MIT licensed (see LICENSE). Scheduling uses the open FSRS
algorithm through ts-fsrs (MIT). It also bundles
sql.js, fflate,
fzstd, zod and the
Anthropic SDK (all MIT), and a common-English
word list from google-10000-english. Osteon is an
independent project, not affiliated with or endorsed by Anki or its developers. It ships no decks.
The anatomy plates in the screenshots are from Gray's Anatomy (1918), public domain.