Recording deck · 23 scenes
Gemma 4 E4B LLM Wiki · Obsidian plugin

Gemma 4 E4B runs inside Obsidian's own process, and builds Andrej Karpathy's living LLM wiki from your notes.

LiteRT-LM and WebGPU do it in the renderer, so there is no API key, no account, no Ollama and no server to keep running — free, and after one model download nothing leaves your machine. The wiki it writes is cards, an index, concept pages, tags, links and provenance checks, all plain Markdown you can edit. Then chat with one note or your whole vault, grounded in what you actually wrote — plus quizzes and flashcards.

In the community store Free & open source Offline after one download GitHub ↗
What makes it different
01

Ask a note, and the model is already there

Every other local-AI plugin for Obsidian talks to something else — Ollama, LM Studio, a server on localhost:11434 that you install, configure and keep running. This one loads Gemma 4 E4B into Obsidian's own renderer through LiteRT-LM and WebGPU. There is no second app.

Ask about the note you have open and the answer is grounded in it. Follow-ups work: "so why does that taste bitter?" carries the previous exchange, because the panel is a conversation and not a list of unrelated questions.

The Obsidian window with the Gemma Wiki panel docked on the right, answering a question about the open note with a Sources row.

Command · Chat with active note (local Gemma)

02

Or ask the whole vault at once

Switch to Wiki mode and the question goes to everything you have filed. Retrieval is index-first: the plugin reads index.md — one line per page — decides which pages are worth opening, and opens only those.

Every answer ends with a Sources row listing exactly the pages it stood on. That row is written by the plugin, never by the model: citation is the one thing a small local model would get wrong without anyone noticing.

Wiki mode: the index open in the editor while the panel answers a question spanning four pages, each named in the Sources row.

Mode · Wiki · reads index.md before deciding what to open

03

Three layers, and only one of them is yours to lose

Karpathy's pattern separates raw sources (immutable), the wiki (owned by the model), and a schema file holding the conventions. This plugin implements that literally.

Your notes stay wherever you keep them and the model never edits, moves or renames them. Above them sits gemma-wiki/ — one card per note, concept pages across them, an index and an append-only log. And schema.md holds your tag vocabulary and a rejected list that outranks the model: a tag you deleted by hand never comes back.

Three stacked layers: your notes (yours, immutable), gemma-wiki (model maintains), schema.md (yours, config), with ingest and rules arrows between them.

Layout · gemma-wiki/ — plain markdown, readable without this plugin

04

One download, then it never touches the network

Two one-time downloads — the ~3 GB model and the WebAssembly runtime — both cached on your disk. After that, nothing. No telemetry, no analytics, no account, no API key, no tokens ever billed.

Your notes are never uploaded anywhere, because there is nowhere to upload them to. Privacy here is a property of the architecture rather than a promise in a policy.

The settings pane showing the local model downloaded and ready, with two guarantees: runs inside Obsidian's process, and no telemetry or account.

Command · Download model (one-time, ~3GB)

The loop
05

Nothing is written until you have read it

Ingesting a note produces one card: a summary, three tags, key points, the mentions it found, and the model's own confidence in its extraction. All of it is rendered in full, exactly as it will be saved, before a single byte lands.

This is the gate every write in the plugin passes through — ingest, concept pages, retagging, relinking, and the one command that rewrites a note of yours.

The review modal showing the drafted card in full — summary, tags, key points, confidence — above Cancel and Approve and write.

Command · Ingest this note into wiki (local Gemma)

06

Sweep a folder, read the shaky ones first

Scan drafts a card for every new or changed note in the folders you named, then shows them in one list sorted lowest-confidence first — so the pages most in need of a human eye are the ones you read while you still have patience. Untick anything that should not have become a page.

Scope is opt-in: leave the folder list empty and scan refuses to run rather than sweeping your whole vault.

A batch review list of drafted pages with confidence flags, the low-confidence one at the top and unticked.

Command · Scan a folder into the wiki (batch, local Gemma)

07

A card knows which note it came from

Each card records source and source_hash in its frontmatter — the path of the note it summarises, and what that note looked like at the time.

That hash is what makes drift detectable. Edit the original note and the card is now describing something that changed; the review board says so. Fixing the note is the real fix — a card edited by hand is a patch the next re-ingest overwrites.

A generated card in the editor showing key points and Related links, with the panel explaining that its frontmatter names the source note.

Folder · gemma-wiki/cards/ — one card per ingested note

08

A page above your pages

Once two or more cards share a tag or a salient mention, the plugin can write the page that sits above them and links down into each one. Ingesting a new note ripples into it, and member lists heal in both directions.

A concept page for coffee, linking down into four member cards, marked as generated.

Command · Build a concept page from a tag or mention (local Gemma)

Keeping it honest
09

It tells you when it has gone stale

A wiki nobody reviews is the failure mode this is built against. Three ways a page goes bad, in one queue: low self-rated confidence, source drift caught by the hash, and plain staleness. Concept overviews are checked too.

The review board listing three pages flagged DRIFTED, LOW and STALE.

Command · Review board (low-confidence, drifted, and stale pages)

10

Every claim has to come from somewhere

The provenance spot-check takes a page's key points back to the raw note and flags the ones no sentence supports — catching the case where ingest wrote something the note never said.

The contradiction sweep checks pairs of pages sharing a tag for claims that disagree, recently-changed pairs first. It quotes the reason and never edits: deciding which one was wrong is yours, and fixing the note behind it is the real repair.

The contradiction sweep showing two pages that disagree about a temperature range, flagged rather than fixed.

Commands · Provenance spot-check · Find contradictions in wiki

11

One command keeps the wiki tidy

The check runs no model at all: orphan pages, index entries pointing at deleted files, pages missing from the index, and how far your tags have drifted from the vocabulary. Then four repairs are offered — make links mutual, drop dead entries, rebuild the vocabulary, apply it to existing pages — each behind its own preview, ticked where the check found something.

Availability is never tied to detection. A check good enough to pick a sensible default is not good enough to be the only way in.

The Tidy dialog listing four repairs with two ticked and a Run 2 of these button.

Command · Tidy the wiki (check, then fix what you approve)

Every day
12

Quiz yourself on what you just wrote

The ⚡ menu holds canned single-task prompts against the open note — Quiz, Flashcards, Find gaps. Every answer still carries its Sources row.

And the menu is extensible by dropping a file: any markdown file in gemma-wiki/skills/ becomes a menu item, frontmatter for the name and icon, the body as the prompt. Add a file, get a command; delete it and it is gone.

The skills menu open with Quiz, Flashcards and Find gaps built in, plus two of the user's own skill files, and numbered questions in the panel.

Panel · ⚡ skills · plus anything in gemma-wiki/skills/

13

Tidy the writing, keep every word

Improve is the one command that rewrites a note you wrote. It touches structure, lists and obvious typos only — wording and voice preserved, never translated, code blocks and callouts untouched. A long note is rewritten in passes and stitched back together, and the whole result is shown before anything is written.

If you edit the note while it runs, it refuses rather than overwriting you.

The Improve preview showing the rewritten note with a note that only structure and typos changed.

Command · Improve formatting of active note (local Gemma)

14

Keep a conversation — without letting it become material

Save a thread and it lands in gemma-wiki/chats/, named after its first question, with each answer keeping the Sources it stood on. The folder has its own index listing everything you kept, newest first.

Nothing in it is retrieved, indexed, linted or scanned. A chat in the wiki index would be indistinguishable from a page — and an answer read back as material comes back months later cited to your own notes. An answer is output, never input. To make one count, put it in a note of your own and scan that, like anything else you wrote.

The chats folder with its own index of saved conversations, and a saved thread in the panel.

Panel · 💾 Save conversation · writes to gemma-wiki/chats/

See it move

The recording deck walks the same features as 23 stepped scenes, from first run to a maintained wiki — scripted mock-ups, arrow keys to advance.