README file from
Github
Most plugins help you write. Almost none help you think.
Stop managing notes. Start managing knowledge. Obsidian is the store; ZettelFlow is the engine that makes the knowledge inside it evolve. It turns a native Canvas into a note-creation wizard, opens your notes, PDFs and EPUBs in a Reader built for thinking, and gives you a small set of practice loops that ask something of you. Every loop is offline, works with AI switched off, and writes nothing to your vault you did not decide.
🔁 What it asks of you
Before any feature list, the things ZettelFlow asks you to do — each a small loop on your own notes, each reached where you already are (Home, Think, the Reader, a note's right-click menu):
| 🔁 Return a claim — say in one sentence what a note claims; later it comes back blind from Home and asks what you say about it now. The return of a claim → | 📖 Look again at what you marked — your Reader highlights come back from Home a few at a time, with one question: do you still think so? A few things you marked → |
| 📄 What survived? — at the end of a chapter you marked, the book gives you a blank leaf: your marks, what they touched, and is one worth a note? What survived → | ✍️ Recall a chapter — put the chapter and your marks away, write what it argued in your own words, then look. Nothing is scored. Recall → |
| 🎲 Collide two notes — from Think, two of your notes with nothing in common, side by side: what could they share? It never answers. Two things far apart (collision) → | ⚖️ Place a wager — add what you expect to see and by when to a claim; on the day, it asks what happened before it shows your prediction. A wager → |
| 🧠 Make a move on an idea — challenge it, reframe it, branch it, set it aside: a cognitive move, recorded as something you did. Make a move → | ✨ And everything else — the Canvas wizard, the semantic graph, health, discovery, dashboards. Everything it does → |
AI is one action, never the product. Every loop and every view works fully with AI disabled; when it is on it proposes, and you accept, edit or reject — the verdict is recorded, never assumed. Knowledge with purpose — starting from your own question and writing a provisional response — needs no AI, methodology or Canvas setup; see Cultivate.
📚 Read like a book — the Reader and your Library
Right-click any note → Read from here. The Reader takes the window and walks you through the note and the notes around it, one chapter at a time — no MOC needed. Your Library puts your PDFs, EPUBs and Web Clipper articles on one shelf, beside the reading paths you saved, and opens them in the same Reader. What you mark lands in Think, never in the book — where you can read it back one book at a time, in the book's order — and a PDF you marked can be handed back as a copy with your notes on it. Esc gives your workspace back exactly as it was.
⚡ How it works — draw it once, every note walks it
Your note workflow is a Canvas. A card is a step, an arrow is the order, a branch is a choice. Press Create note and ZettelFlow walks that graph with you as a short wizard — the idea, its kind, its tags, the links your vault suggests — while a live preview writes the note: frontmatter, body and file name, no template edited by hand. Then the note doesn't land alone: it arrives in your graph, already linked, in the region it belongs to — and you see the bridge it just made.
…and the wizard is only the door. Home is where you land each day: a greeting, Think's composer, where you left off and what came back today, answered in place.
🚀 Get started in 5 minutes
Install ZettelFlow from Obsidian's community plugins — or open it in Obsidian. Everything starts at the ZettelFlow ribbon button, which opens a menu.
- See it work in one click — ribbon → Create note. While no canvas creates notes, it offers Create the example flow: a small canvas with one step, ready to run. Press Create note again and walk it.
- Learn it, or install a ready-made system — ribbon → Community, one view with four rooms. Learn has a short tutorial for every feature. Systems has Zettelkasten, PARA, GTD, research…: walk one on its own drawing before it writes anything, then Install, with Undo right in the notice. Contribute shares your canvas as a system; Installed takes one back.
- No canvas at all — ribbon → Think to write down a thought, or Cultivate to grow one idea.
Draw your own flow:
- Create a canvas (e.g.
flows/Daily note.canvas), right-click it → Use this canvas to create notes → Give it the role. - Open it and press Create the first step → Note — file with frontmatter. The first step starts the flow on its own.
- Select the step → Edit step → Add an action → Ask for text, and write its Question.
- Ribbon → Create note: the wizard walks your flow and creates the note.
Stuck? Read the getting started guide or open a discussion.
🔒 Capabilities & privacy
ZettelFlow collects no telemetry and sends no personal data or vault contents anywhere. No account, no backend: the network is touched only by the opt-in paths below.
- File system (vault). Reads canvas flow files and creates/edits notes (e.g. the Change note state command writes a single lifecycle property to the active note). All access goes through Obsidian's
Vault/FrontmatterServiceAPI — never a hardcoded path. Works on desktop and mobile. - Vault enumeration. ZettelFlow lists every markdown file path to build the offline knowledge model that health, discovery, the graph and Cultivate all read. Paths and metadata only, all local — and you can keep folders out of it with the knowledge scope.
- Network — two opt-in paths, nothing until you use them. The community gallery does read-only
GETs of the static catalog on GitHub (no backend, no account, no uploads), and the optional AI provider sends length-bounded note content to the single https endpoint you configure. Both are off until you open the browser or enable AI. - Dynamic code execution. The Script action, dynamic selectors, vault hooks and workflow-event conditions run JavaScript you write, with the plugin's access to your vault — including read-only access to the whole knowledge model via
zf.knowledge— so only run scripts you trust. No remote code is ever fetched or executed, and every runtime function is built in one audited module. - Clipboard — write only. The “copy” buttons put a step or action configuration on your clipboard as JSON. ZettelFlow never reads your clipboard. Cite's Copy puts the citation you see there, on that click only.
- Handwriting — opt-in, per press. Reading ink sends an image of that one ink note's strokes and its passage to your AI provider, only when you press Read as text. Nothing reads ink by itself.
- The Reader's AI moves — opt-in, per click. Six moves on a passage you selected (Why?, Challenge, Question, What's the claim, Reflect, Explain) send that passage, its paragraph and the one before, and the book and chapter titles to your AI provider, only when you click one. Nothing from your vault is sent, and nothing runs by itself. On desktop and Android, Translate sends one selected passage and the target language, on a click; Look up reads your own dictionaries on the device and makes no request at all. Listen uses only your device's own voices: no text leaves the device.
- Network — the tutorial catalog, while Learn is open. Community's Learn room does a read-only
GETof the tutorial catalog and its illustrations from GitHub — the same kind of request as the gallery, made only when Learn is shown, never at startup. No account, no upload, no telemetry.
See Capabilities & privacy for full details.
🤝 Contributing & support
Report a bug · Request a feature · Start a discussion · Contribute code
If ZettelFlow saves you time, a ⭐ helps others find it — and you can support development: