# Nodum — complete public content

> Nodum is a free, open-source, web-based knowledge base — an Obsidian alternative that runs in the browser. Write markdown notes, connect them with [[wikilinks]], get backlinks automatically, and explore everything you know as a GPU-rendered knowledge graph. MIT licensed and self-hostable in one command.

Source of truth: https://nodum.md. Comparison facts verified 2026-08-20.
This file concatenates every public page on the site. Individual pages are canonical.

---

# Concepts and guides

## What a second brain actually is — and how to build one that lasts

URL: https://nodum.md/learn/second-brain

A second brain is an external, searchable store of what you have read, decided and figured out, structured so that past-you can hand something to future-you. In practice it needs four things: fast capture, plain text you own, links between notes rather than folders alone, and a way to see the whole thing at once.

### The problem a second brain solves

Most people do not have a note-taking problem. They have a retrieval problem. The notes exist — in a document, a chat thread, a book margin, a half-finished draft — and none of them can be found at the moment they would have been useful. Capture without retrieval is just a slower way of forgetting.

A second brain is the fix: one place where everything you have thought about goes, structured so that finding a thing does not require remembering where you put it. The name comes from Tiago Forte's *Building a Second Brain*, but the practice is much older — the commonplace book, the card index, Niklas Luhmann's Zettelkasten. What changed is that software made the linking cheap.

### Folders are not enough, and neither is search

Folders force a decision you cannot make correctly at capture time: which single category does this belong to? A note about pricing psychology written while reading a book about behavioural economics for a project about onboarding belongs in three places, so it ends up in whichever one you thought of first and is lost to the other two.

Search fixes retrieval only when you remember the words. It cannot tell you what a note is *related* to, which is the part you actually forgot. That is what links are for: instead of filing a note, you connect it to the notes it has something to do with, and the connection is the memory.

### The four things a second brain needs

Strip away the methodology arguments and the requirements are fairly stable across every system that has worked for anyone:

- **Capture that takes seconds.** If writing a note is a project, you will not write it. A quick switcher, a daily note and a web clipper cover most of it.
- **Plain text you own.** A second brain is a decades-long artefact. It should outlive the app it was written in, which means markdown files and a real export, not a hosted database with a lossy CSV escape hatch.
- **Links, and the reverse of links.** Writing `[[Compound interest]]` in one note should make that note visible *from* the other side. Backlinks are what turn a pile of notes into a network.
- **A view of the whole thing.** A graph of your notes tells you where the dense clusters are, which ideas are orphaned, and which two areas of your thinking have never once been connected.

### How this works in Nodum

Nodum is an open-source second-brain app that runs in a browser. Notes are plain markdown files. Typing `[[` autocompletes across every note you have; the note on the other end grows a backlink automatically, with the sentence around it for context. Link a note that does not exist yet and it appears on the graph as a ghost node — click it and the note is created, with the backlink already resolved.

The graph is the whole vault, force-simulated on the GPU, and stays smooth into the tens of thousands of notes. Colour a folder in the explorer and its notes carry that colour into the graph, so the shape of your thinking becomes something you can actually look at.

Because it is MIT licensed you can read every line of it, and because it self-hosts with one Docker Compose command, the second brain you spend five years building does not depend on a company continuing to exist.

### Choosing a second-brain app: what to check before you commit

You are choosing something you intend to use for years. These are the questions worth asking before the first note, not after the thousandth.

- Can I export everything, in a format another tool can read, without a conversion script?
- Are notes plain files, or rows in someone's database?
- Does linking two notes take one keystroke, or a menu?
- Do I get backlinks automatically, or do I have to maintain both directions by hand?
- Can I see the whole collection at once?
- If the company disappears tomorrow, do I still have working software — or just a folder and a problem?
- Does it work on every machine I use, including the one I cannot install software on?

### Questions

**What is the best second brain app?**

There is no single best one, but the shortlist is consistent: Obsidian if you want local files and the largest plugin ecosystem, Logseq if you think in outlines, Notion if your second brain is really a team wiki, and Nodum if you want an open-source, browser-based option with wikilinks, automatic backlinks and a knowledge graph that you can self-host.

**Is there a free second brain app?**

Yes. Nodum is free and open source under the MIT licence, with no plan tiers, and it can be self-hosted at your own infrastructure cost. Obsidian's core app is also free, and Logseq is free and AGPL licensed.

**How do I start building a second brain?**

Start by writing notes, not by designing a system. Capture one note per idea, give each a title you would search for, and link them with wikilinks as you notice connections. Structure emerges from the links after a few hundred notes; a folder hierarchy designed on day one almost never survives.

**What is the difference between a second brain and a Zettelkasten?**

A Zettelkasten is one specific method for building a second brain: atomic, self-contained notes written in your own words, linked to each other rather than filed by topic. Second brain is the broader term and includes methods like PARA that organise by actionability instead. Both need the same underlying capability: cheap linking.

## AI note-taking that reads your own notes — not someone else's model of them

URL: https://nodum.md/learn/ai-note-taking

An AI note-taking app is only as useful as the notes it can see. Nodum puts an assistant inside your own vault: it searches, reads, creates and extends your notes, streams its replies, and runs on an API key you supply — Claude, OpenAI, Gemini or Qwen — encrypted at rest, with a different key per vault if you want one.

### The thing most AI note apps get backwards

The pitch is usually the model: this app has AI in it. But a language model is a commodity you can rent by the token, and the part that is not a commodity is your notes. An AI feature is worth something only when it can read the specific, private, accumulated context that nobody else has — and that means the value lives in the vault, not in the assistant.

This inverts how the product should be built. Rather than a company holding your notes and selling you access to a model, you should hold your notes and bring whichever model you like. When a better model ships next quarter, you change a setting rather than a vendor.

### What an AI assistant should be able to do with a vault

Reading a single open note is table stakes and not very useful. The interesting operations need the whole graph:

- **Search across everything**, then answer from what it found, citing the notes it used.
- **Read a note and its neighbours** — the ones it links to and the ones that link back — because the context you wrote three years ago is exactly the context you have forgotten.
- **Write into the vault**: create a note, extend one, link it to the right existing notes rather than inventing new orphans.
- **Work with your structure**: folders, tags, daily notes and templates, not a parallel filing system it invented.

### Your key, your model, encrypted at rest

Nodum's assistant runs on a key you provide. Claude, OpenAI, Gemini and Qwen are all supported, keys are encrypted at rest, and a key can be set per vault — so a work vault and a personal vault need not share a provider or a bill.

There is no per-seat AI upsell, because there is nothing to upsell: the software is MIT licensed and the model is yours. If you self-host and point it at a local model endpoint, no note ever leaves your network.

### The other half: MCP, so your existing AI tools reach the vault

The assistant in the app is only one route in. Nodum is also a Model Context Protocol server at `/api/v1/mcp` — 36 tools over the same services and the same ownership checks the app uses. Point Claude Code, Claude Desktop or Cursor at it with a per-user token and the AI you already work in can create vaults, write and link notes, colour folders, search, import and export.

Tokens are per-user, hashed, and revocable without touching your session, so handing an agent access is not the same as handing it your password. Long-running operations like an import report progress as they go.

This is the part that makes an "AI brain" more than a phrase: the notes are a real store your other tools can read and write, not a chat window with a memory feature.

### Questions to ask any AI note-taking app



- Whose API key is it — mine, or theirs with a markup?
- Can I change model providers without changing apps?
- Can the assistant see my whole vault, or only the note that is open?
- When it writes a note, does it link into what already exists?
- Are my notes used to train anything?
- Can I self-host it and point it at a local model?
- Can my other AI tools reach the vault, or is the assistant the only door?

### Questions

**What is the best AI note-taking app?**

It depends on whether you want the AI or the notes to be the product. Tools like Mem and Reflect build the assistant into a hosted, proprietary notebook. Nodum takes the other route: an open-source vault of plain markdown with an assistant that runs on your own API key, plus an MCP server so Claude Code, Claude Desktop or Cursor can work on the same notes.

**Can I use Claude or ChatGPT with my own notes?**

Yes. Nodum's built-in assistant runs on a key you supply for Claude, OpenAI, Gemini or Qwen. Separately, Nodum is a Model Context Protocol server, so Claude Code, Claude Desktop and Cursor can connect directly with a revocable token and read, search, create and link notes in your vault using 36 tools.

**Is an AI second brain private?**

That depends entirely on where the notes live. In Nodum, notes stay in your vault — on the hosted instance or on a server you run — and the assistant only sends what a request needs to the model provider you chose. Self-host it and point it at a local model endpoint and nothing leaves your network at all.

**Does AI replace linking notes yourself?**

No, and it is worth being blunt about that. A model can suggest connections and Nodum surfaces semantically related notes using pgvector similarity over embeddings, but the act of deciding two ideas belong together is the thinking. Automating it away gives you a tidier vault and a worse understanding of your own material.

## Open-source note-taking: what the licence actually buys you

URL: https://nodum.md/learn/open-source-note-taking

An open-source note-taking app is one whose source code is published under a licence that lets you read, modify, run and redistribute it. That matters for notes specifically, because a note archive is a decades-long asset: if the software is open, it can be forked and kept alive regardless of what happens to the people who wrote it.

### Open format is not the same as open source

This distinction gets blurred constantly, and it is the single most useful thing to be clear about. An open *format* means your data is readable without the vendor's software — markdown files in a folder, for instance. An open *source* means the software itself is published and can be run by anyone.

Obsidian has the first and not the second: your vault is plain markdown on your disk, which is a genuinely strong data-ownership position, but the application is proprietary and its source is not published. If the project stops, you keep your files and lose your editor. Logseq, Joplin, Trilium, AppFlowy, AFFiNE, SilverBullet and Nodum have both.

Which one you need depends on what you are protecting against. Open format protects your data. Open source protects your workflow.

### MIT, AGPL, and source-available — the practical difference

Most open-source note apps sit in one of three buckets, and the differences are not academic.

- **Permissive (MIT, Apache-2.0)** — do almost anything, including building a closed product on top. Nodum and AFFiNE are MIT; SilverBullet is MIT.
- **Copyleft (AGPL-3.0)** — you may run and modify it, but if you offer it as a network service you must publish your changes. Logseq, Joplin, Trilium and AppFlowy are AGPL. This is a deliberate choice to keep hosted forks open, and it is a real constraint if you intend to build commercially.
- **Source-available** — the code is readable but the licence restricts use, so it is not open source in the OSI sense even though it looks like it at a glance. Anytype has spent most of its life here.

### The open-source options, honestly placed

There is no single winner, because these tools disagree about what a note is.

- **Logseq** (AGPL) — local-first outliner, block references, flashcards. Best if you think in bullets.
- **Joplin** (AGPL) — notebooks, tags, end-to-end encrypted sync to storage you own, the best Evernote importer there is. Best if you are leaving Evernote.
- **Trilium / TriliumNext** (AGPL) — self-hosted, deep hierarchy, note cloning, a real scripting API. Best if you want to program your notes.
- **AppFlowy** (AGPL) and **AFFiNE** (MIT) — the Notion-shaped ones: pages, databases, and in AFFiNE's case an infinite canvas.
- **SilverBullet** (MIT) — the minimal self-hosted web PKM: one process over a folder of markdown, extended with Lua.
- **Nodum** (MIT) — browser-native, multi-tenant, Obsidian-compatible markdown with wikilinks, automatic backlinks, a GPU knowledge graph, collaboration, publishing and an MCP server.

### What makes Nodum's position different

Nodum is MIT licensed end to end — the FastAPI backend and the Next.js frontend both — with no open-core split, no paid tier holding features back, and no contributor licence agreement assigning rights elsewhere. The repository is the product.

It is also the open-source option that is web-native rather than a desktop app with a sync service bolted on. That is what makes it usable on a locked-down work laptop, a Chromebook, and a phone, all against the same vault. Self-hosting is one Docker Compose command that brings up the API, Postgres, Redis, MinIO and a Caddy edge with automatic TLS.

And the exit is real: export gives you a folder-true zip of `.md` files — the same thing an Obsidian vault is — so choosing it does not commit you to it.

### How to check an app is actually open source



- Find the LICENSE file in the repository — not the marketing page.
- Check whether the licence is OSI-approved, or merely 'source available'.
- Check whether the *whole* product is open, or only a client while the server is proprietary.
- Look for an open-core split: are the features you need behind a paid, closed tier?
- Check the export path works before you need it.
- Check whether there is a self-hosting guide that someone has actually followed.

### Questions

**What is the best open-source note-taking app?**

For local-first outlining, Logseq. For leaving Evernote, Joplin. For a self-hosted hierarchy with scripting, Trilium. For a Notion-shaped workspace, AppFlowy or AFFiNE. For browser-based linked notes with backlinks and a knowledge graph, Nodum — MIT licensed, self-hostable, and storing Obsidian-compatible markdown.

**Is Obsidian open source?**

No. Obsidian is proprietary software. Its vault format is open — plain markdown files in a folder — but the application source is not published. Nodum is MIT licensed across both frontend and backend, which is why it can be forked, audited and self-hosted.

**Is there an open-source alternative to Obsidian?**

Yes, several. Logseq is the closest local-first one. Nodum is the closest web-based one: it uses the same [[wikilink]] syntax, imports and exports Obsidian vaults as zips, and adds a GPU-rendered knowledge graph, collaboration and publishing — all under the MIT licence.

**Does open source mean free?**

Usually in practice, but not by definition — open source is about rights, not price. Nodum is both: free to use and MIT licensed. If you self-host it, your only cost is the server it runs on.

## How to choose a note-taking app you will still be using in five years

URL: https://nodum.md/learn/note-taking-app

The best note-taking app is the one whose notes you can still open in ten years. Judge candidates on four things rather than feature lists: how fast capture is, whether notes link to each other and show the reverse link, whether the files are plain text you own, and whether export produces something another tool can read.

### Feature lists are the wrong axis

Every note app in this category can do headings, checkboxes, tags and search. Comparing those is how people end up switching tools every eight months, because the differences that actually decide whether a system survives are structural, and structural properties do not photograph well in a feature table.

There are four that matter, and they are worth more attention than the rest combined.

### 1. Capture has to be nearly free

The failure mode of every note system is the note you did not write. If capturing a thought means choosing a notebook, a template and a title, you will not do it while you are in the middle of something else — which is exactly when the thoughts worth keeping arrive.

What good capture looks like: a keystroke that opens a search box which creates the note if nothing matches, a daily note that is always one command away, and a browser clipper for things you read. In Nodum that is ⌘O for the quick switcher, a daily note with your own template, and an MV3 Chrome clipper backed by a token that can only create notes.

### 2. Notes must link, in both directions

One-directional links are what every app has: a hyperlink from A to B. The useful part is the reverse — standing on note B and seeing that A, F and Q all reference it, with the sentence around each reference.

This is the single feature that separates a note *collection* from a note *system*, and it is why the tools that have it — Obsidian, Logseq, Roam, Nodum — feel categorically different from the ones that do not. You get it for free at write time: type `[[Compound interest]]` and the backlink appears on the other side without any further work.

### 3. Plain text, or you are renting

If your notes are rows in a hosted database, your relationship with the vendor is a tenancy. Pricing changes, feature removals and acquisitions are all things that happen to tenants. Markdown files in folders are the format with the longest demonstrated shelf life and the widest tool support, and they are readable in a text editor when everything else has gone.

This is not hypothetical: the largest waves of note-app migration in the last decade were triggered by pricing and ownership changes, not by better features appearing elsewhere.

### 4. Test the export before you need it

Export is the feature you evaluate on day one and use on the worst day. Import fifty notes into a candidate, export them, and look at what comes out. Does the folder structure survive? Do the links still point at anything? Is it markdown, or an XML dialect that needs a converter?

Nodum's export is a folder-true zip of `.md` files — the same shape an Obsidian vault is, which is also what its importer accepts. That symmetry is deliberate: an import path that is not reversible is a trap, and a tool worth choosing should be one you can leave.

### Where the main options land

Against those four criteria: Obsidian wins on ownership and plugins but is proprietary and desktop-only. Notion wins on databases and team work but stores blocks, not files. Evernote and OneNote are strong capture tools with no linking model. Logseq is excellent if you outline. Nodum is the browser-based, open-source one — markdown files, wikilinks, automatic backlinks, a knowledge graph, and an export that gives back exactly what you put in.

### The five-minute evaluation

Do this with any candidate before you commit a single real note to it.

- Time yourself capturing a thought from a cold start. More than five seconds is a problem.
- Link two notes. Then open the second one — can you see the first?
- Find where the files live. Can you open one in a text editor?
- Export everything and read the output. Would another app accept it?
- Open it on your second device, and on a machine you cannot install software on.
- Look up the licence. If the company disappears, what do you still have?

### Questions

**What is the best note-taking app?**

For local markdown files and the largest plugin ecosystem, Obsidian. For team wikis and databases, Notion. For outlining with block references, Logseq. For an open-source, browser-based option with wikilinks, automatic backlinks and a knowledge graph that you can self-host, Nodum. All four keep notes in a form you can get back out.

**What is the best free note-taking app?**

Obsidian's core app is free, Logseq is free and AGPL licensed, and Nodum is free and MIT licensed with no plan tiers. Nodum is the one that also runs in a browser and can be self-hosted, so it costs nothing beyond the server if you run your own.

**Should I use markdown for notes?**

For anything you intend to keep, yes. Markdown is plain text, readable without special software, supported by every relevant tool, and has outlived several generations of proprietary note formats. The main thing it does not do well is complex layout and handwriting.

## What a knowledge graph of your notes actually shows you

URL: https://nodum.md/learn/knowledge-graph

A knowledge graph of your notes draws every note as a node and every link as an edge, then lets physics arrange it. It is useful for three specific things: finding clusters of thinking you did not plan, spotting orphaned notes nothing references, and seeing which two areas of your work have never once been connected.

### Why a graph and not a folder tree

A folder tree encodes one relationship: containment. It answers "what is inside what", which is a question you rarely have. A graph encodes the relationship you actually care about — "what is connected to what" — and because a note can link to any number of others, it does not force the single-category decision that folders do.

The tree is still useful for storage. The graph is what you use for thinking.

### Three things a graph tells you that search cannot



- **Clusters you did not plan.** After a few hundred notes, dense regions appear where you have been thinking hardest. They are usually not the topics you would have listed if asked.
- **Orphans.** Notes nothing links to and which link to nothing. Some are fine — a shopping list is not supposed to be connected. Others are ideas you captured and then abandoned, and seeing them is often the prompt to do something with them.
- **Structural holes.** Two dense clusters with no edge between them means two bodies of your own knowledge that have never been brought into contact. That gap is frequently where the interesting work is.

### Reading a graph properly

A few conventions make one legible rather than pretty. Node size by degree — how many notes link to it — puts your hub notes visually forward. Colour by folder or tag turns the graph into a map of your own categories rather than an undifferentiated hairball. And a local graph, showing only the neighbours of the note you are in at an adjustable depth, is often more useful day to day than the global one.

Ghost nodes are the underrated part: links to notes that do not exist yet, drawn as hollow nodes. They are a to-do list made of your own intentions, and in Nodum clicking one creates the note with the backlink already resolved.

### The engineering, briefly

Force-directed layout is expensive — every node repels every other node — and most graph views quietly stop being usable somewhere in the low thousands. Nodum renders the graph on WebGL2 through `@cosmos.gl/graph`, running the force simulation on the GPU, which is what keeps it smooth into the tens of thousands of notes.

The interaction matters as much as the frame rate: draggable nodes, hover highlighting of neighbours, live force sliders for centre, repulsion, link force and link distance, search and tag filters, and labels that fade with zoom. There is also a guard so that a lost WebGL context — which browsers do, unprompted — cannot take the workspace down with it.

Graph data is cached in Redis and invalidated on note and link writes, so opening the graph on a large vault does not mean recomputing it.

### Questions

**What is a knowledge graph in a note-taking app?**

It is a visualisation where each note is a node and each link between notes is an edge, arranged by a force simulation so connected notes pull together. It shows clusters, orphaned notes and gaps between topics — structural information about your notes that search cannot surface.

**Is the graph view actually useful, or just decorative?**

It is genuinely useful for three things: finding clusters of thinking you did not plan, spotting notes nothing references, and noticing two areas of your work that have never been linked. It is not useful for navigation — search and a quick switcher are faster for getting to a specific note.

**How many notes can a graph view handle?**

Most implementations degrade in the low thousands because force-directed layout is quadratic in the number of nodes. Nodum runs the simulation on the GPU via WebGL2, which keeps it interactive into the tens of thousands of notes.

## Backlinks and wikilinks: the mechanic that turns notes into a system

URL: https://nodum.md/learn/backlinks

A wikilink is a link you write as `[[Note title]]`. A backlink is the automatic reverse: when note A links to note B, note B shows that A references it, with the surrounding sentence for context. You write links in one direction and the system maintains both, which is what makes linking cheap enough to actually do.

### The syntax

Wikilink syntax came from wikis and was popularised for personal notes by Roam and Obsidian. It is deliberately tiny, because a link you have to think about is a link you will not make.

- `[[Note title]]` — link by title. Autocomplete usually fires on the second bracket.
- `[[folder/Note title]]` — link by path when two notes share a title.
- `[[Note title|what to call it here]]` — an alias, so the sentence still reads properly.
- `[[Note title#Heading]]` — jump to a specific heading in the target note.
- `![[Note title]]` — embed the note's content inline rather than linking to it.
- `![[image.png]]` — embed an attachment.

### Why the reverse direction is the point

Writing a link is a decision you make once, in one place, while writing. Maintaining the reverse by hand is work you would never keep up, which is why manually cross-referenced note systems collapse: the index goes stale and stops being trustworthy.

Automatic backlinks remove that cost entirely. The consequence is behavioural rather than technical — because linking is free, you link far more, and the network gets dense enough to be genuinely useful. A note-taking system's value is roughly the square of how connected it is, and connection is bounded by how much effort each link costs.

### Unlinked mentions, and links to notes that don't exist

Two related features do most of the remaining work. **Unlinked mentions** find places where a note's title appears as plain text without being a link — usually things you wrote before that note existed. Turning them into links is often the fastest way to densify an old vault.

**Unresolved links** are the other direction: `[[A note I have not written]]` is valid, and it appears in the graph as a ghost node. This turns out to be a good way to work — write the link while the thought is live, create the note later. In Nodum, clicking the ghost node creates the note and the backlink resolves on the spot.

### How Nodum implements it

Link extraction happens server-side on every save, writing into a `links` table with source, target and an unresolved flag. That is what makes backlinks, unlinked mentions, the graph and the orphan filter all query-cheap rather than something recomputed by scanning files.

The backlinks pane shows linked mentions with a context snippet, unlinked mentions, and outgoing links, on every note. Because links live in a table rather than being parsed on demand, renaming a note or importing a vault of two hundred notes resolves links across the whole batch rather than file by file.

### Questions

**What is a backlink in a note-taking app?**

A backlink is the automatic reverse of a link you wrote. If note A contains `[[Note B]]`, then note B displays that A references it — usually with the sentence around the link for context. You maintain one direction; the app maintains the other.

**What is the difference between a wikilink and a markdown link?**

A markdown link, `[text](path/to/file.md)`, points at a file path and breaks when the file moves. A wikilink, `[[Note title]]`, points at a note by title and is resolved by the app, so it survives moves and renames and can be created before the target note exists.

**What are unlinked mentions?**

Places where a note's title appears as plain text somewhere else in the vault without being a link. They are usually text written before the note existed. Reviewing them and converting the relevant ones into real links is the quickest way to connect an existing collection of notes.

## Zettelkasten, without the mystique

URL: https://nodum.md/learn/zettelkasten

A Zettelkasten is a note system with three rules: one idea per note, written in your own words, and linked to the notes it relates to rather than filed under a topic. Niklas Luhmann kept his on paper index cards. Digitally, the method needs cheap linking, stable note identity and a way back in — which is what wikilinks, backlinks and index notes provide.

### The three rules, and why each one is there



- **One idea per note.** Atomic notes can be linked precisely and reused in contexts you did not anticipate. A note containing six ideas can only ever be linked as a lump.
- **In your own words.** Rewriting forces comprehension. A note that is a quotation is a bookmark; a note that is your restatement is a thought you have actually had. This is the rule people skip and the reason their system feels inert.
- **Linked, not filed.** Rather than assigning a category, you connect the note to the existing notes it argues with, extends or contradicts. The structure is emergent — it is the record of what you noticed, not a taxonomy you invented in advance.

### What Luhmann's numbering was actually for

Luhmann's famous alphanumeric ids — 21/3d7a6 — get treated as the heart of the method. They were a workaround. On paper, a new card had to be physically placed somewhere, and the numbering let him insert a card *next to* the one it responded to without renumbering the box.

Software removes the constraint entirely: a link is a link regardless of where a note sits. Reproducing Luhmann's ids in a digital system is cargo cult. Keep the atomicity, the rewriting and the linking; drop the numbering.

### Fleeting, literature, permanent

The three-tier distinction is worth keeping because it prevents the most common failure: a slip-box full of quotations nobody will ever reread.

**Fleeting notes** are captures — a thought on a walk, a line from a conversation. They are disposable and should be processed within days. **Literature notes** record what a source said, in your words, with the citation. **Permanent notes** are the actual Zettelkasten: one idea, your own claim, linked into the network. The work is the promotion from one tier to the next, and skipping it produces a very tidy archive of things you have not thought about.

### Index notes and the way back in

A network with no entry points is unusable. Luhmann kept hub cards pointing into each line of thought; the digital equivalent is variously called an index note, a structure note or a map of content. It is a note whose body is mostly links, curated by hand, describing a region of the vault.

Build them when a cluster gets big enough to be hard to hold in your head — not before. A map of content written on day one is a folder hierarchy wearing a different hat.

### Running one in Nodum

Practically: one note per idea, titled as the claim it makes rather than the topic it covers ('Compound interest rewards patience more than accuracy' beats 'Compound interest'). Link with `[[` as you write. Let the backlinks pane show you what already argues with the note you are on. Use tags for state — `#fleeting`, `#literature`, `#permanent` — rather than for topics, since topics are what links are for.

The graph earns its place here specifically: orphans are notes you captured and never thought about again, and dense clusters with no edge between them are two lines of thought that have never met.

### Questions

**What is a Zettelkasten?**

A Zettelkasten — German for 'slip box' — is a note-taking method built on atomic notes: one idea per note, written in your own words, and linked to related notes rather than filed by topic. It was made famous by the sociologist Niklas Luhmann, who used it to write a very large body of work from a box of index cards.

**What is the best app for a digital Zettelkasten?**

Any app with cheap wikilinks and automatic backlinks will do: Obsidian, Logseq, Roam and Nodum all qualify. Nodum is the open-source, browser-based option — MIT licensed, plain markdown, wikilinks with autocomplete, automatic backlinks with context, and a knowledge graph for spotting orphans and clusters.

**Do I need Luhmann's numbering system?**

No. The alphanumeric ids solved a physical problem — inserting a card next to a related one without renumbering the box. In software, links do that directly. Keep the atomic notes, the rewriting in your own words, and the linking; the numbering adds nothing.

## Personal knowledge management, minus the productivity theatre

URL: https://nodum.md/learn/personal-knowledge-management

Personal knowledge management is the practice of capturing what you learn, connecting it to what you already know, and retrieving it when it is relevant. Most systems fail at the middle step: capture is easy and search is built in, but connection requires either deliberate linking or it does not happen at all.

### Three steps, and the one everyone skips

PKM decomposes cleanly into capture, connect and retrieve. Capture is a solved problem — every app has a new-note button, a clipper and a mobile share sheet. Retrieve is mostly solved too, because full-text search is cheap and good.

Connect is where systems die. It is the only step that requires you to do something at the moment of writing that pays off months later, and it is therefore the step that gets dropped first. Everything else in a PKM setup — methods, templates, tag taxonomies — is downstream of whether connection actually happens.

### The methods, briefly and fairly



- **PARA** (Projects, Areas, Resources, Archive) organises by actionability rather than subject. Excellent for work you are actively doing; weaker as a long-term thinking archive, because 'archive' is where ideas go quiet.
- **Zettelkasten** organises by links between atomic notes. Excellent for developing ideas over years; poor at tracking what is due on Thursday.
- **Johnny.Decimal** imposes a strict numbered hierarchy. Excellent for shared team filing; it is a filing system, not a thinking system.
- **Evergreen notes** — Andy Matuschak's formulation — emphasises notes that are rewritten and improved over time rather than appended to. The most useful single idea to take from any of them.

### What to actually do

The honest advice is unglamorous. Pick a tool with cheap linking and a real export. Write notes titled as claims rather than topics. Link while writing, never in a later 'processing' session that will not happen. Review the orphans occasionally. Do not build a taxonomy before you have the notes to justify it.

Most people's PKM problem is not that they picked the wrong method. It is that they spent the first three weeks configuring the system and then never wrote in it.

### What a PKM tool needs to provide

Reduced to essentials: a fast capture path, wikilinks with autocomplete, automatic backlinks with context, full-text search with operators, tags that nest, daily notes, and an export that produces plain files. A graph is valuable but secondary — it is a review tool, not a daily one.

Nodum provides all of those: quick switcher on ⌘O that creates the note if nothing matches, `[[` autocomplete across the vault, a backlinks pane with linked and unlinked mentions, Postgres full-text search with `path:`, `file:` and `tag:` operators and quoted phrases, nested tags with counts, configurable daily notes and templates, server-side version history on every save, and a folder-true markdown export.

### Questions

**What is personal knowledge management?**

Personal knowledge management (PKM) is the practice of capturing information you encounter, connecting it to what you already know, and retrieving it when relevant. The connecting step — usually done with links between notes — is what distinguishes it from simply keeping files.

**What is the best PKM app?**

Obsidian for local markdown files and plugins, Logseq for outlining, Notion for team wikis, and Nodum for an open-source browser-based option with wikilinks, automatic backlinks, a knowledge graph and self-hosting. The choice matters less than picking one with cheap linking and a real export, then writing in it.

**PARA or Zettelkasten?**

They solve different problems and can coexist. PARA organises by actionability and suits project work; Zettelkasten organises by links between atomic notes and suits developing ideas over years. A common arrangement is PARA folders for active work and a linked, atomic note network underneath it.

## Self-hosted notes: what it costs, what it buys, and how to run one

URL: https://nodum.md/learn/self-hosted-notes

Self-hosting a notes app means running the server yourself, so your notes sit on infrastructure you control and no vendor can reprice, restrict or discontinue them. The cost is real but small: a modest VPS, a domain, and occasional maintenance. Nodum self-hosts with one Docker Compose command including automatic TLS.

### What self-hosting actually buys

Three things, and it is worth being precise because self-hosting is often sold on vaguer grounds. First, **continuity**: the software cannot be discontinued out from under you, because you have the source and the running copy. Second, **privacy in the strong sense**: your notes are on your disk, not covered by someone else's terms of service. Third, **cost shape**: a flat server bill rather than per-seat pricing that scales with your team.

What it does not buy is zero effort. You are now the operator: backups, updates and TLS renewal are yours.

### What it costs, honestly

A single-user Nodum instance runs comfortably on a small VPS — the stack is Postgres, Redis, MinIO, the FastAPI API and the Next.js frontend behind Caddy. That is more moving parts than a single-binary app like SilverBullet, and it is the right trade only if you want what the extra parts provide: full-text search, a cached graph, attachments in object storage, background import and export jobs.

Budget an evening for the first deployment and an hour a quarter afterwards. If that sounds like too much, the hosted instance exists for exactly that reason, and you can move between them with an export and an import.

### How Nodum deploys

The whole stack is containerised, edge proxy included:

- `cp deploy/.env.prod.example deploy/.env.prod`, fill it in, `chmod 600` it.
- `cd deploy && ./compose.sh prod up -d --build`.
- Caddy terminates TLS and provisions and renews certificates automatically, proxies `/api` to the API and `/s3` to MinIO for presigned attachment URLs.
- Caddy is the only container that binds a host port — Postgres and Redis are not even on its network.
- Schema changes run in a one-shot `migrate` container everything else waits on, so no two containers race Alembic.
- `./smoke.sh https://your-domain` drives signup → note → attachment through the real proxy chain to prove the deployment works.

### The things people forget

**Backups.** A self-hosted note archive with no backup is worse than a hosted one, not better. Nodum ships a backup and restore runbook; the short version is a scheduled `pg_dump` plus the MinIO bucket, stored somewhere that is not the same machine.

**Updates.** Pull, rebuild, let the migrate container run. Read the release notes first.

**Refusing to boot on defaults.** The API deliberately refuses to start on placeholder or known-default credentials, in staging as well as production. This is an annoyance exactly once and a saved incident afterwards.

### Questions

**Can I self-host Obsidian?**

Not the application itself — Obsidian is a proprietary local app, though you can self-host sync by pointing the vault folder at your own Syncthing, Git or WebDAV setup. If you want a server-based knowledge base you actually run, Nodum, SilverBullet, Trilium and Joplin Server are the open-source options.

**What do I need to self-host Nodum?**

A machine with Docker or Podman, a domain name pointed at it, and about an evening. The compose stack brings up Postgres, Redis, MinIO, the API, the web frontend and a Caddy edge proxy that provisions TLS certificates automatically. A small VPS is sufficient for personal use.

**Is self-hosting more private?**

It is more private in the sense that matters most: the notes are on hardware you control and are not covered by a third party's terms. It is only more secure if you actually maintain it — an unpatched server you run is worse than a maintained service someone else runs.

## Why notes should be markdown files

URL: https://nodum.md/learn/markdown-notes

Markdown is plain text with a light convention for structure, readable without any special software and supported by essentially every tool that handles text. For notes it is the format with the longest demonstrated shelf life: a markdown file written today opens correctly in a text editor in twenty years, which is not true of any proprietary note format.

### The argument in one line

Your notes will outlive the app you wrote them in. Every proprietary note format in history has eventually needed a converter, and every converter loses something. Plain text does not have this problem, because the file *is* the content.

Markdown adds just enough convention on top — headings, emphasis, lists, links, code — to be structured without stopping being readable when nothing renders it.

### Where markdown genuinely falls down

It is worth being honest about the limits, because the format is often oversold. Markdown has no good story for complex tables, precise layout, handwriting, or anything spatial. There is no single standard — CommonMark, GFM and various dialects disagree on details — so a document can render differently in two tools. And extensions for maths, diagrams and callouts are conventions rather than specification, so portability is partial.

If your notes are mostly handwritten, mostly visual, or mostly structured records, markdown is the wrong hammer and something like OneNote, Heptabase or a database tool will serve you better.

### What a good markdown editor should do

Raw markdown with a rendered preview beside it is the old model and it splits your attention. Live preview — where syntax hides as you write and reveals when your cursor enters it — is what makes markdown feel like writing rather than marking up.

Nodum uses CodeMirror 6, the same editor engine Obsidian uses, with three modes: live preview, raw source, and reading view, cycled with ⌘E. Headings size themselves, emphasis renders, task checkboxes are clickable, code fences highlight, and the syntax reappears exactly where you are typing.

### The extensions worth having



- **Wikilinks** — `[[Note]]`, with autocomplete, aliases, heading targets and embeds.
- **Callouts** — `> [!note]`, `> [!warning]` and the rest of the Obsidian set, with icons, colours and folding.
- **Maths** — inline `$..$` and block `$$..$$` rendered with KaTeX.
- **Diagrams** — Mermaid in fenced blocks.
- **Frontmatter** — YAML at the top of the file for properties, tags, aliases and dates.
- **Tables** — GFM tables, ideally with real cell editing rather than hand-aligning pipes.

### Questions

**Why use markdown for notes instead of a rich-text editor?**

Because a markdown file is plain text: it opens in any editor, on any operating system, without the original application. Rich-text and proprietary note formats need their own software to be read, which makes them a liability for anything you intend to keep for years.

**What is live preview in a markdown editor?**

Live preview renders markdown in place as you write — headings size themselves, bold text appears bold — while revealing the raw syntax on the line your cursor is on. It replaces the older split-screen model where you edit raw markdown on one side and read a preview on the other.

**Does Nodum use the same markdown as Obsidian?**

Largely yes. Nodum supports Obsidian's wikilink syntax including paths, aliases, heading targets and embeds, the full callout set, YAML frontmatter, KaTeX maths, Mermaid diagrams, GFM tables and footnotes. Obsidian vaults import as zips and export back in the same shape.


---

# Comparisons with other note-taking apps

Nodum's own column, for reference in every comparison below:

- license: MIT — the whole stack, frontend and backend
- hosting: Hosted at nodum.md, or self-hosted with one Docker Compose command
- storage: Plain markdown files, exported as a folder-true zip whenever you ask
- linking: [[wikilinks]], [[path/Note]], [[Note|alias]], ![[embeds]] — Obsidian syntax
- graph: Global and local force-directed graph, GPU-rendered on WebGL2
- pricing: Free and open source; self-host at your own infrastructure cost
- platforms: Any modern browser, desktop and mobile; installable as a PWA
- export: Vault zip of .md files, plus a REST API and an MCP server

## Nodum vs Obsidian

URL: https://nodum.md/alternatives/obsidian

Nodum is an open-source alternative to Obsidian that runs in a browser instead of as a desktop app. It uses the same wikilink syntax, the same backlinks and the same plain-markdown files, adds a GPU-rendered knowledge graph, and is MIT licensed — so you can read every line, self-host it, and export your vault as ordinary .md files at any time.

### What Obsidian is

Obsidian is a local-first markdown knowledge base: a desktop and mobile app that reads a folder of plain .md files on your own disk, links them with [[wikilinks]], and draws the result as a graph. Its plugin ecosystem is the largest in this category by a wide margin, and the app itself is free. It is also closed-source — the vault format is open, the program is not — and it is not a web application, so a machine you cannot install software on is a machine you cannot use it on.

### Obsidian facts

- license: Proprietary. The file format is open; the application is not
- hosting: Local-first desktop and mobile app; optional paid Sync service
- storage: Plain markdown files in a folder on your own disk
- linking: [[wikilinks]], aliases, embeds, block references, heading links
- graph: Global and local graph view, with groups and filters
- pricing: Free for personal and commercial use; Sync and Publish are paid add-ons
- platforms: macOS, Windows, Linux, iOS, Android — no browser version
- export: Nothing to export: the files are already yours, on your disk

### What Obsidian does better

- A plugin ecosystem of well over a thousand community plugins, plus themes — nothing else in this category is close, and Nodum's sandboxed plugin API is deliberately narrower.
- It works with no network at all. Nodum needs a server it can reach, even if that server is a Raspberry Pi in your cupboard.
- Your notes are already files on your own disk, which is the strongest data-ownership story anyone can offer.
- Mature native mobile apps, offline editing included.
- Years of polish and a large community writing about workflows, templates and setups.

### What Nodum does better

- It is genuinely open source — MIT, frontend and backend — so you can audit it, fork it, or run it forever regardless of what the project does next.
- It runs in the browser. A locked-down work laptop, a Chromebook, a borrowed machine and a phone all get the same vault with nothing installed.
- Sync is not an add-on. The server is the vault, so every device is current by construction, with no subscription attached.
- Real-time collaborative editing on a note, with presence — Obsidian has no first-party equivalent.
- Publishing a vault as a public site is built in rather than a separate paid product.
- An MCP server with 36 tools, so Claude Code, Claude Desktop or Cursor can read and write your vault directly.
- An AI assistant that works on your vault using your own API key, encrypted at rest — no per-seat AI upsell.

### Switch if

- You want to open your notes on any machine, without installing anything.
- You care that the software itself is open source, not only the file format.
- You are paying for Sync, or Publish, and would rather run the whole thing yourself.
- You want two people editing one note at the same time.
- You want an AI assistant, or an MCP client, working directly against your notes.

### Stay if

- You depend on specific community plugins — Dataview, Templater, Excalidraw. That ecosystem is Obsidian's moat and Nodum does not replicate it.
- You work offline for long stretches, on a plane or in the field.
- You want your notes to exist as files on your own filesystem at all times, with no server in the picture.

### Migrating from Obsidian

1. **Export your Obsidian vault** — Zip your vault folder exactly as it sits on disk. Keep the folder structure — Nodum resolves path-style wikilinks like [[projects/Note]] against it.
2. **Create a Nodum vault** — Sign up at nodum.md or start your own instance with ./compose.sh prod up -d --build, then create an empty vault.
3. **Import the zip** — Settings → Vault → Import. Nodum unwraps a redundant root folder, detects .obsidian config directories, and treats .md, .markdown and .txt as notes. PDFs come in as attachments plus a note of their extracted text.
4. **Check the links resolved** — Links are resolved across the whole import batch rather than file by file, so [[Note]] references to files later in the zip still land. Open the graph: anything still a ghost node was an unresolved link in Obsidian too.
5. **Keep your exit open** — Export the vault whenever you like and you get a folder-true zip of .md files back — the same thing you put in.

Nothing about the import is one-way. Nodum's export is Obsidian-compatible, so going back is the same operation in reverse.

### Questions

**Is Obsidian open source?**

No. Obsidian is a proprietary, closed-source application. Its vault format is open — plain markdown files in a folder — but the program itself is not, and its source code is not published. Nodum is MIT licensed end to end, so both the format and the software are open.

**Is there a web version of Obsidian?**

Obsidian has no official browser version; it ships as a desktop and mobile application. Nodum is a web-native knowledge base built on the same ideas — CodeMirror 6 editor, [[wikilink]] syntax, backlinks and a graph view — so it runs in any modern browser with nothing installed.

**Can I import my Obsidian vault into Nodum?**

Yes. Zip your vault folder and import it from Settings → Vault → Import. Nodum resolves wikilinks across the whole batch, handles nested folders and path-style links, recognises .obsidian config folders, and imports .md, .markdown and .txt files. Export gives you a folder-true zip of markdown back.

**Does Nodum support Obsidian plugins?**

No, and the project says so plainly rather than implying otherwise. Obsidian plugins are written against Obsidian's own Node-level API; Nodum's plugin API is capability-scoped and runs inside an opaque-origin sandboxed iframe, which is a deliberately different and narrower contract. If a specific plugin is central to how you work, stay on Obsidian.

**Is Nodum free?**

Yes. Nodum is free and open source under the MIT licence. You can use the hosted instance at nodum.md or run your own with one Docker Compose command, in which case your only cost is the server you run it on.

## Nodum vs Notion

URL: https://nodum.md/alternatives/notion

Nodum is an open-source alternative to Notion for personal knowledge work. Where Notion stores your writing as blocks in a hosted database, Nodum stores plain markdown files you can export as a folder at any time. It adds wikilinks, automatic backlinks and a knowledge graph, and it is MIT licensed and self-hostable.

### What Notion is

Notion is a hosted workspace built around blocks and databases: pages nest inside pages, and any collection of them can be viewed as a table, board, calendar or gallery. It is very strong as a team wiki and lightweight project tool, and its collaboration and permissions are excellent. Your content lives in Notion's database rather than as files, and while there is a markdown export, round-tripping a complex Notion workspace back out is famously lossy.

### Notion facts

- license: Proprietary, closed source
- hosting: Notion's cloud only; no self-hosting
- storage: Blocks in a hosted database; markdown/HTML export is lossy
- linking: @-mentions and page links; relations between database rows
- graph: No graph view
- pricing: Free personal tier; per-seat monthly subscription for teams, AI billed on top
- platforms: Browser, desktop and mobile apps
- export: Markdown, HTML or CSV export — structure and database views do not survive intact

### What Notion does better

- Databases. Tables, boards, calendars, relations and rollups have no equivalent in Nodum, and for project tracking they are the whole point.
- Team collaboration at organisation scale: granular permissions, guests, comments, shared workspaces.
- A very large template ecosystem and integrations with the rest of the SaaS world.
- A block editor that non-technical colleagues take to immediately.

### What Nodum does better

- Your notes are markdown files, not rows in someone else's database — export is a zip of .md, not a migration project.
- Open source under MIT, and self-hostable, so the data and the software both stay reachable.
- Wikilinks and automatic backlinks: link two notes and the far note grows the reverse link, with the sentence around it.
- A knowledge graph of the whole vault, GPU-rendered — Notion has nothing like it.
- No per-seat pricing and no AI upsell: bring your own model key.
- Works offline-ish and fast on modest hardware; the editor is CodeMirror, not a heavyweight block DOM.

### Switch if

- You are using Notion as a personal wiki rather than a team database.
- You want to own your notes as files.
- You have felt the Notion export problem and do not want to feel it again.
- You think in connections and want backlinks and a graph.

### Stay if

- You rely on Notion databases — relations, rollups, board views — for real work.
- Your team lives in Notion and permissions matter more than file ownership.

### Migrating from Notion

1. **Export from Notion as Markdown** — Settings → Export all workspace content, format Markdown & CSV, and include subpages. Notion emails you a zip.
2. **Tidy the filenames** — Notion appends a 32-character page id to every filename. Strip it with a rename tool before importing so your note titles and links stay readable.
3. **Import the zip into Nodum** — Settings → Vault → Import. Nested pages arrive as nested folders and the markdown body comes across intact.
4. **Convert the links you care about** — Notion's page links export as relative markdown links; rewrite the important ones to [[wikilinks]] so they show up as backlinks and as edges in the graph.

Notion databases do not survive as databases. Export the ones you need as CSV and keep them alongside the notes, or accept that this part of the workspace stays where it is.

### Questions

**Is there an open-source alternative to Notion?**

Several, and they split by what you use Notion for. For databases and team wikis, AppFlowy and AFFiNE are the closest structurally. For personal knowledge work — linked notes, backlinks, a graph — Nodum is the closer fit: it is MIT licensed, stores plain markdown files, and can be self-hosted with one Docker Compose command.

**Can I move my Notion pages into Nodum?**

Yes. Export your workspace from Notion as Markdown & CSV with subpages included, strip the page ids Notion appends to filenames, and import the zip into a Nodum vault. Nested pages become nested folders. Notion databases do not transfer as databases — export those as CSV separately.

**Does Nodum have databases like Notion?**

No. Nodum has YAML frontmatter properties, tags, saved searches and a graph, which cover querying and organising notes, but it has no table, board or calendar views over structured records. If Notion databases are load-bearing for you, Nodum is not a replacement for that part.

## Nodum vs Logseq

URL: https://nodum.md/alternatives/logseq

Nodum and Logseq are both open-source, link-first knowledge bases, and the real difference is the writing unit. Logseq is an outliner: everything is a bullet, and blocks are the thing you reference. Nodum is a document editor: a note is a page of prose you can link to and embed. Logseq runs locally; Nodum runs in a browser against a server you can host yourself.

### What Logseq is

Logseq is an open-source, local-first knowledge base built as an outliner: every line is a block, blocks can be referenced and embedded individually, and the daily journal is the default entry point. It reads and writes markdown or org-mode files on your own disk, is AGPL-3.0 licensed, and has a strong following among people who think in bullets and spaced repetition.

### Logseq facts

- license: AGPL-3.0 — genuinely open source
- hosting: Local-first desktop and mobile app; optional paid sync
- storage: Markdown or org-mode files on your disk, structured as outlines
- linking: [[page links]], ((block references)), tags, and the daily journal
- graph: Global and local graph view
- pricing: Free; an optional paid sync service
- platforms: macOS, Windows, Linux, iOS, Android
- export: Files are already on disk, though block-heavy markdown reads oddly elsewhere

### What Logseq does better

- Block references. Reusing and transcluding a single bullet across pages is Logseq's core idea and Nodum has no direct equivalent.
- Local-first and fully offline, with files on your own disk.
- Built-in spaced-repetition flashcards.
- A journal-first workflow that suits people who capture into a daily page and organise later.
- Query blocks build live views over your own outline.

### What Nodum does better

- Notes are documents. If you write paragraphs rather than bullets, Logseq's markdown fights you and Nodum's does not.
- It is a web application, so there is nothing to install and every device sees the same vault.
- Files come out as ordinary markdown that reads correctly in any other editor — Logseq's outline markdown carries structural bullets everywhere it goes.
- Real-time collaboration with presence on a note.
- Publishing a vault as a public site is built in.
- An MCP server and an AI assistant on your own key.

### Switch if

- You bounced off outlining and want to write prose.
- You want the same vault on a work machine you cannot install software on.
- You want your markdown to be plain markdown when it leaves.

### Stay if

- Block references and transclusion are how you work.
- You want flashcards and spaced repetition in the same tool.
- Local-first with no server is a requirement, not a preference.

### Migrating from Logseq

1. **Find your graph folder** — Logseq keeps a folder with pages/ and journals/ subdirectories. That folder is your data.
2. **Flatten the outline where it matters** — Logseq markdown is bullets all the way down. Pages you want to read as prose elsewhere are worth un-bulleting before or after the import.
3. **Zip and import** — Zip the graph folder and import it in Settings → Vault → Import. [[Page links]] carry over as wikilinks and resolve across the batch.
4. **Expect to lose block references** — ((block-id)) references have no target in a document model. Search for them after importing and convert the ones that mattered into links or embeds.

### Questions

**Is Logseq open source?**

Yes. Logseq is licensed under AGPL-3.0 and its source is public. Nodum is also open source, under the more permissive MIT licence, which additionally allows closed-source derivatives.

**What is the difference between Logseq and Nodum?**

Logseq is a local-first outliner where every line is a referenceable block and the app runs on your own machine against files on disk. Nodum is a browser-based document editor where a note is a page of prose, backed by a server you can self-host. Both use wikilinks, backlinks and a graph.

**Is there a web version of Logseq?**

Logseq is distributed as a desktop and mobile application rather than a hosted web app. Nodum is web-native: it runs in any modern browser with nothing installed, against the hosted instance or a server you run yourself.

## Nodum vs Evernote

URL: https://nodum.md/alternatives/evernote

Nodum is a free, open-source alternative to Evernote. Evernote is a proprietary hosted notebook with rich-text notes and tiered subscriptions; Nodum stores plain markdown files, links them with wikilinks, draws them as a knowledge graph, and is MIT licensed, so you can self-host it and export everything as a folder of .md files.

### What Evernote is

Evernote is the original mass-market digital notebook: notebooks and tags, rich-text notes, a well-known web clipper, OCR over images and scanned documents, and strong search. It has been through several ownership and pricing changes, which is what sends most people looking for an alternative in the first place.

### Evernote facts

- license: Proprietary, closed source
- hosting: Evernote's cloud
- storage: Rich-text notes in a hosted store; ENEX export
- linking: Note links and tags; no wikilink syntax and no backlinks pane
- graph: No graph view
- pricing: Limited free tier with tiered paid plans
- platforms: Browser, desktop and mobile
- export: ENEX (an XML format) or HTML — converting to markdown takes a tool

### What Evernote does better

- The web clipper is more mature, and OCR over photographed and scanned documents has no equivalent in Nodum.
- Handwriting, audio notes and document scanning in the mobile apps.
- Decades of polish on search across mixed media.

### What Nodum does better

- Free and open source; no plan tiers and no device limits.
- Markdown files instead of an XML export format you need a converter for.
- Wikilinks, automatic backlinks and a knowledge graph — Evernote has none of these.
- Self-hostable, so your archive is not dependent on one company's pricing decisions.
- A Chrome web clipper of its own, backed by scoped, revocable tokens that can only create notes.

### Switch if

- You have been repriced or feature-limited once too often.
- You want your archive in a format any text editor can read in twenty years.
- You have started thinking in links rather than notebooks.

### Stay if

- You depend on OCR over scanned documents and photographs.
- Your notes are mostly handwriting, audio and attachments rather than text.

### Migrating from Evernote

1. **Export your notebooks as ENEX** — In Evernote, export each notebook to an .enex file. Do it notebook by notebook so a failure is recoverable.
2. **Convert ENEX to markdown** — Use a converter such as Yarle or evernote2md to turn the .enex files into a folder of .md files with attachments alongside.
3. **Zip and import** — Zip the converted folder and import it into a Nodum vault. Folder structure becomes folders; attachments land in storage and embed as ![[file]].
4. **Add the links** — Evernote notes are rarely linked. Once inside, type [[ and start connecting them — the backlinks pane and the graph fill in from there.

### Questions

**What is the best open-source Evernote alternative?**

It depends on what you use Evernote for. Joplin is the closest structural match — notebooks, tags, a clipper, AGPL licensed — and imports ENEX directly. Nodum is the better fit if you want linked notes, backlinks and a knowledge graph in a browser, with markdown files and MIT licensing.

**How do I move Evernote notes to markdown?**

Export each notebook as an .enex file from Evernote, then run it through a converter such as Yarle or evernote2md to produce plain .md files with attachments. Zip the result and import it into a Nodum vault, where folders and attachments carry over.

## Nodum vs Roam Research

URL: https://nodum.md/alternatives/roam-research

Nodum is a free, open-source alternative to Roam Research. Both are networked-thought tools built on bidirectional links and a graph. Roam is a proprietary, subscription-only outliner with block references; Nodum is MIT-licensed, stores plain markdown files you can export at will, and can be self-hosted.

### What Roam Research is

Roam Research is the tool that put bidirectional linking, the daily notes page and block references in front of a wide audience. It is an outliner in the browser, with a strong graph and a devoted community. It is proprietary, subscription-only, and your database lives on Roam's servers.

### Roam Research facts

- license: Proprietary, closed source
- hosting: Roam's cloud; there is no self-hosted option
- storage: A hosted graph database; JSON, EDN and markdown export
- linking: [[page links]], ((block refs)), #tags, daily notes
- graph: Global and local graph, a signature feature
- pricing: Paid subscription only, monthly or yearly, with no free tier
- platforms: Browser, with desktop and mobile wrappers
- export: JSON/EDN/markdown export, though outline structure travels badly

### What Roam Research does better

- Block references and sidebar-driven exploration remain excellent, and Nodum has no block-level reference.
- A distinctive, fast outliner that a lot of people think in.
- The community around Roam invented much of this category's vocabulary.

### What Nodum does better

- Free and MIT licensed rather than subscription-only.
- Your notes are markdown files, exportable as a folder-true zip, not a proprietary graph database.
- Self-hostable, so the notes survive whatever happens to the company.
- Document editing rather than forced outlining.
- Real-time collaboration, publishing, an MCP server and a bring-your-own-key AI assistant, all included.

### Switch if

- You are paying a Roam subscription for what is, for you, a personal notes app.
- You want an exit that produces ordinary markdown.
- You would rather write paragraphs than bullets.

### Stay if

- Block references are the mechanic you actually use.
- The outliner is how you think and a document editor feels wrong.

### Questions

**Is there a free alternative to Roam Research?**

Yes. Nodum is free and open source under the MIT licence, with bidirectional links, automatic backlinks, daily notes and a knowledge graph — the features most people leave Roam looking for. Logseq is the other strong free option if you specifically want an outliner with block references.

**Can I export my Roam graph and use it elsewhere?**

Roam exports to JSON, EDN or markdown. The markdown export preserves your text and page links but flattens block references, because no document-based tool has a target for them. Import the markdown into a Nodum vault and the [[page links]] resolve across the whole batch.

## Nodum vs Obsidian Publish

URL: https://nodum.md/alternatives/obsidian-publish

Nodum is a free, open-source alternative to Obsidian Publish. Publishing is part of the app rather than a separate paid service: any note gets a public share link, and any vault can be published as a browsable public site with working links between notes. Self-host it and there is no per-site fee at all.

### What Obsidian Publish is

Obsidian Publish is a paid hosting add-on that turns selected notes from a vault into a public website on publish.obsidian.md or your own domain, billed per site per month. It is well made and genuinely low-effort — you pick notes, they appear online with the graph and backlinks intact.

### Obsidian Publish facts

- license: Proprietary, sold as a subscription add-on to Obsidian
- hosting: Hosted by Obsidian; custom domains supported
- storage: The published copy lives on Obsidian's servers
- linking: Wikilinks and backlinks are preserved on the published site
- graph: Interactive graph on the published site
- pricing: Per-site monthly subscription, billed separately from Sync
- platforms: Any browser, for readers
- export: The source vault stays on your disk

### What Obsidian Publish does better

- A genuinely polished reading experience with themes, custom domains and a published graph.
- It is one toggle away from a vault you already keep — no server to run.
- Search, backlinks and the graph all work on the public site out of the box.

### What Nodum does better

- Publishing is included, not a second subscription: every Nodum vault can become a public site at /s/your-slug.
- Individual notes get their own unlisted share link, revocable at any time.
- Published pages are server-rendered with real titles, descriptions and Open Graph cards, so they can be found and shared properly.
- Self-host it and publishing costs whatever your server costs and nothing more.
- The publishing code is MIT licensed, so what the reader sees is something you can change.

### Switch if

- You are paying per site and publishing more than one vault.
- You want the published site on infrastructure you control.
- You want a share link for a single note without publishing a whole site.

### Stay if

- You want custom themes and a custom domain with no server administration at all.
- Your notes live in Obsidian and you have no interest in moving the source of truth.

### Questions

**Is there a free alternative to Obsidian Publish?**

Yes. Nodum includes publishing at no cost: any note can be given a public share link, and any vault can be published as a public site with links between notes intact. Because Nodum is MIT licensed you can also self-host it, in which case publishing costs only the server you run.

**Can I publish only some notes rather than a whole vault?**

Yes. Publishing in Nodum works at two levels: a per-note public link, which is unlisted and revocable, and a whole-vault public site at /s/your-slug. Use the per-note link when you want to share one page and nothing else.

## Nodum vs Joplin

URL: https://nodum.md/alternatives/joplin

Nodum and Joplin are both open-source markdown note apps, and they organise differently. Joplin is a desktop and mobile app built around notebooks, tags and pluggable sync targets, with an excellent Evernote importer. Nodum is browser-native and link-first: wikilinks, automatic backlinks and a GPU-rendered knowledge graph, on a server you can host yourself.

### What Joplin is

Joplin is a long-standing open-source note app under AGPL-3.0: markdown notes in notebooks, end-to-end encrypted sync to a target you choose — Nextcloud, Dropbox, S3, WebDAV or its own service — a web clipper, and a solid Evernote ENEX importer. It is the safe answer for someone leaving Evernote who wants to stay open source.

### Joplin facts

- license: AGPL-3.0 — genuinely open source
- hosting: Desktop and mobile app; sync to a target you choose, or Joplin Cloud
- storage: Markdown notes in a local database, synced as files to your target
- linking: Markdown links between notes; no wikilink syntax and no backlinks pane
- graph: No first-party graph view
- pricing: Free; Joplin Cloud is an optional paid sync service
- platforms: macOS, Windows, Linux, iOS, Android, terminal
- export: JEX, markdown or HTML — a clean, well-supported export

### What Joplin does better

- End-to-end encrypted sync to storage you already own — Nextcloud, S3, WebDAV, Dropbox.
- The best Evernote import path in the category.
- A mature terminal client, and offline-first apps on every platform.
- Years of stability and a large plugin set of its own.

### What Nodum does better

- Wikilinks and automatic backlinks: Joplin links notes but does not show you the reverse side.
- A GPU-rendered knowledge graph, global and local.
- It runs in a browser — nothing to install, and the same vault everywhere.
- Real-time collaborative editing and publishing built in.
- An MCP server and an AI assistant on your own key.

### Switch if

- You want to see what links to what.
- You want the vault in a browser rather than an installed app.
- You want to publish or collaborate on notes.

### Stay if

- End-to-end encrypted sync to your own storage is the requirement.
- You need offline-first apps on every platform, including a terminal.

### Questions

**Does Joplin have a graph view?**

Joplin has no first-party graph view; community plugins add limited versions. Nodum ships a global and a local graph rendered on WebGL2, with node size by degree, ghost nodes for unresolved links, tag and folder filters, and live force controls.

**Joplin or Nodum — which should I use?**

Choose Joplin if end-to-end encrypted sync to your own storage and offline-first apps matter most. Choose Nodum if you want linked notes with backlinks and a knowledge graph, in a browser, on a server you can self-host. Both are open source and both keep your notes as markdown.

## Nodum vs Microsoft OneNote

URL: https://nodum.md/alternatives/onenote

Nodum is an open-source alternative to Microsoft OneNote for people whose notes are mostly text. OneNote is a freeform notebook canvas built around handwriting and mixed media inside the Microsoft ecosystem. Nodum stores plain markdown files, links them with wikilinks, generates backlinks automatically, and is MIT licensed and self-hostable.

### What Microsoft OneNote is

OneNote is Microsoft's digital notebook: notebooks, sections and pages, with a freeform canvas you can type or draw anywhere on. It is free with a Microsoft account, syncs through OneDrive, and is excellent with a stylus. It is not markdown, has no wikilinks or backlinks, and its export options are limited.

### Microsoft OneNote facts

- license: Proprietary, closed source
- hosting: Microsoft 365 / OneDrive
- storage: A proprietary notebook format synced through OneDrive
- linking: Internal page links; no wikilink syntax, no backlinks
- graph: No graph view
- pricing: Free with a Microsoft account; storage counts against OneDrive quota
- platforms: Windows, macOS, browser, iOS, Android
- export: PDF, or the .one notebook format — no clean markdown path

### What Microsoft OneNote does better

- Handwriting and stylus input, which Nodum does not attempt at all.
- The freeform canvas: put anything anywhere on the page.
- Deep integration with Outlook, Teams and the rest of Microsoft 365.
- Free with an account most workplaces already have.

### What Nodum does better

- Plain markdown files instead of a proprietary notebook format with no real export.
- Wikilinks, backlinks and a knowledge graph.
- Open source and self-hostable — no Microsoft account, no OneDrive quota.
- A real markdown editor with code blocks, KaTeX maths and Mermaid diagrams.

### Switch if

- Your notes are text and you have hit OneNote's lack of linking.
- You want out of the Microsoft account requirement.
- You want an export that is readable without Microsoft software.

### Stay if

- You write by hand on a tablet.
- Your team runs on Microsoft 365 and shared notebooks are part of the workflow.

### Questions

**Is there an open-source alternative to OneNote?**

Yes. For text-first notes, Nodum is MIT licensed, stores plain markdown, and adds wikilinks, backlinks and a knowledge graph. Joplin is the closer match if you want OneNote's notebooks-and-tags structure specifically. Neither replaces OneNote's handwriting and freeform canvas.

**Can I export OneNote notes to markdown?**

Not directly. OneNote exports to PDF or its own .one format, so most people convert with a script or a third-party tool, or copy pages out section by section. Once you have markdown, zip the folder and import it into a Nodum vault.

## Nodum vs Apple Notes

URL: https://nodum.md/alternatives/apple-notes

Nodum is an open-source alternative to Apple Notes for people who need their notes outside the Apple ecosystem. Apple Notes is free, fast and deeply integrated, but Apple-only and closed. Nodum runs in any browser, stores plain markdown files, links notes with wikilinks, and renders the whole vault as a knowledge graph.

### What Apple Notes is

Apple Notes is the built-in note app on iPhone, iPad and Mac: free, instant, well synced through iCloud, with folders, tags, scanning, handwriting and — since recent releases — links between notes. Its limits are its boundaries: it is Apple-only, closed, and its export is not designed for leaving.

### Apple Notes facts

- license: Proprietary, closed source
- hosting: iCloud
- storage: A proprietary local database synced through iCloud
- linking: Links between notes and #tags; no wikilink syntax, no backlinks pane
- graph: No graph view
- pricing: Free; storage counts against iCloud quota
- platforms: macOS, iOS, iPadOS, plus a limited iCloud web view
- export: PDF per note, or copy-paste — no bulk markdown export

### What Apple Notes does better

- It is already there, it is instant, and it costs nothing.
- Handwriting, document scanning, Apple Pencil and system-wide share sheets.
- iCloud sync that simply works across Apple devices.

### What Nodum does better

- It works on Windows, Linux, Android and every browser — not just Apple hardware.
- Markdown files with a real bulk export instead of per-note PDFs.
- Wikilinks, automatic backlinks and a knowledge graph.
- Open source, MIT licensed and self-hostable.
- Code blocks, KaTeX maths, Mermaid diagrams, tables and callouts.

### Switch if

- You use a non-Apple machine for part of your day.
- You have more than a few hundred notes and want them linked.
- You want to be able to get all of it out at once.

### Stay if

- You are all-Apple and your notes are short, visual, and mostly captured on a phone.

### Questions

**How do I export Apple Notes to markdown?**

Apple Notes has no bulk markdown export. The usual routes are the Exporter app for macOS, an Apple Shortcuts automation, or exporting notes as PDFs and converting. Once you have a folder of .md files, zip it and import it into a Nodum vault.

**Is there an Apple Notes alternative for Windows?**

Nodum runs in any modern browser, so the same vault opens on Windows, Linux, macOS, Android and iOS with nothing installed. It is MIT licensed and can be self-hosted, and notes are plain markdown files rather than an iCloud-only database.

## Nodum vs Anytype

URL: https://nodum.md/alternatives/anytype

Nodum is an alternative to Anytype for people who want plain markdown rather than an object database. Anytype is local-first and encrypted, built on objects, types and relations, and has spent most of its life under a source-available rather than an OSI-approved licence. Nodum is MIT licensed, stores .md files, and runs in a browser.

### What Anytype is

Anytype is a local-first, end-to-end encrypted workspace built on objects and relations rather than documents: everything is a typed object, linked to other objects, synced peer-to-peer between your own devices. It is ambitious and privacy-forward, and it has been shipped under a source-available licence with a stated intention of moving to a fully open one.

### Anytype facts

- license: Source-available for most of its history, with a stated move toward a fully open licence
- hosting: Local-first with peer-to-peer sync; self-hosted sync node possible
- storage: An encrypted local object store, not markdown files
- linking: Objects link to objects; relations rather than wikilink syntax
- graph: Graph view over objects and relations
- pricing: Free tier with paid storage/sync plans
- platforms: macOS, Windows, Linux, iOS, Android
- export: Markdown and protobuf export

### What Anytype does better

- End-to-end encryption and peer-to-peer sync with no server in the middle.
- The object-and-relation model is more expressive than files-and-folders for structured data.
- Genuinely local-first: it works with no network at all.

### What Nodum does better

- MIT licensed, unambiguously, with no licence-transition question hanging over it.
- Your notes are markdown files rather than rows in an encrypted object store.
- It runs in a browser, so no install and no per-device setup.
- Obsidian-compatible wikilink syntax and import.
- Publishing, collaboration and an MCP server built in.

### Switch if

- The licence matters to you and you want an OSI-approved one.
- You want files, not objects.
- You need browser access from machines you do not control.

### Stay if

- End-to-end encryption and peer-to-peer sync are the requirement.
- You want typed objects and relations rather than documents.

### Questions

**Is Anytype open source?**

Anytype's code is public, but for most of its life it has been released under a source-available licence rather than an OSI-approved open-source one, with the project stating an intention to move to a fully open licence. Nodum is MIT licensed today, which is an OSI-approved licence with no usage restrictions.

## Nodum vs Trilium Notes

URL: https://nodum.md/alternatives/trilium

Nodum is an alternative to Trilium Notes for self-hosters who want plain markdown. Both are open source and both are designed to run on your own server. Trilium is a hierarchical note tree with a powerful scripting API and its own storage format; Nodum stores Obsidian-compatible .md files and is built around wikilinks, backlinks and a knowledge graph.

### What Trilium Notes is

Trilium Notes — continued by the community as TriliumNext — is an AGPL-3.0 self-hosted knowledge base built on a deep note hierarchy, with note cloning, attributes, relation maps and a genuinely powerful scripting API. It is a favourite among people who want to program their own note system.

### Trilium Notes facts

- license: AGPL-3.0 — genuinely open source
- hosting: Self-hosted server plus desktop clients
- storage: Its own database format; markdown and HTML export
- linking: Internal links, note cloning, attributes and relation maps
- graph: Relation and link maps
- pricing: Free; your own hosting cost
- platforms: Self-hosted web, plus desktop apps
- export: Markdown or HTML archive

### What Trilium Notes does better

- The scripting API. Trilium lets you write real code against your notes; Nodum's plugin sandbox is deliberately narrower.
- Note cloning — one note living in several places in the tree — has no Nodum equivalent.
- Attributes and relation maps give it structured-data power Nodum does not match.
- A very deep hierarchy model for people who organise by tree.

### What Nodum does better

- Notes are plain markdown files, so an Obsidian vault imports and exports cleanly both ways.
- MIT rather than AGPL, which matters if you intend to build on it commercially.
- A GPU-rendered force graph over the whole vault, not just relation maps.
- Real-time collaboration, publishing, and an MCP server.
- A modern editor with live preview, callouts, KaTeX and Mermaid.

### Switch if

- You want Obsidian-compatible markdown rather than a bespoke store.
- You want the graph, backlinks and unlinked mentions.
- You want collaboration and publishing without extra parts.

### Stay if

- You script against your notes.
- Cloning and attributes are how your system works.

### Questions

**What is a good self-hosted alternative to Trilium?**

Nodum is a close fit: MIT licensed, self-hosted with one Docker Compose command that brings up the API, Postgres, Redis, MinIO and a Caddy edge with automatic TLS, and it stores plain markdown so an existing vault imports and exports cleanly. SilverBullet is the other option if you want a lighter, Lua-scriptable web PKM.

## Nodum vs AFFiNE

URL: https://nodum.md/alternatives/affine

Nodum is an alternative to AFFiNE for people who want a knowledge base rather than a whiteboard workspace. AFFiNE combines a block document editor with an Excalidraw-style edgeless canvas and is MIT licensed. Nodum focuses on plain markdown notes, wikilinks, automatic backlinks and a force-directed knowledge graph, with a canvas alongside rather than at the centre.

### What AFFiNE is

AFFiNE is an open-source, MIT-licensed workspace that puts a block editor and an infinite whiteboard on the same document: write a page, then flip it to edgeless mode and arrange blocks spatially. It is local-first with optional cloud sync, and it is the closest open-source answer to "Notion plus Miro".

### AFFiNE facts

- license: MIT — genuinely open source
- hosting: AFFiNE Cloud or self-hosted
- storage: Block documents with local-first sync; markdown/HTML/PDF export
- linking: Bi-directional page links between docs
- graph: No force-directed knowledge graph; the canvas is the spatial view
- pricing: Free and open source; paid cloud plans
- platforms: Browser, desktop, mobile
- export: Markdown, HTML, PDF

### What AFFiNE does better

- The edgeless canvas is genuinely good and tightly integrated with the documents.
- The block editor feels closer to Notion for people migrating from it.
- Docs and whiteboards in one artefact rather than two.

### What Nodum does better

- Plain markdown files as the storage format, with Obsidian-compatible import and export.
- A force-directed knowledge graph over the whole vault.
- Automatic backlinks with context snippets, plus unlinked mentions.
- An MCP server and a bring-your-own-key AI assistant.

### Switch if

- You want a knowledge base first and a canvas second.
- You want markdown files rather than block documents.
- You want backlinks and a graph.

### Stay if

- The whiteboard is the point, and you think spatially rather than in links.

### Questions

**AFFiNE or Nodum?**

Both are MIT licensed and both self-host. Choose AFFiNE if you want documents and an infinite whiteboard in one workspace. Choose Nodum if you want a markdown knowledge base with wikilinks, automatic backlinks and a knowledge graph, where the canvas is a feature rather than the centre.

## Nodum vs AppFlowy

URL: https://nodum.md/alternatives/appflowy

Nodum is an alternative to AppFlowy for people whose work is linked notes rather than structured databases. AppFlowy is an AGPL-licensed, local-first Notion alternative built in Rust and Flutter, with pages, boards and grids. Nodum is MIT licensed, web-native, and built around markdown files, wikilinks, backlinks and a knowledge graph.

### What AppFlowy is

AppFlowy is an open-source Notion alternative under AGPL-3.0, built in Rust with a Flutter interface. It is local-first, with sync through AppFlowy Cloud or a self-hosted instance, and it reproduces Notion's pages-and-databases model more faithfully than anything else in open source.

### AppFlowy facts

- license: AGPL-3.0 — genuinely open source
- hosting: Local-first, with AppFlowy Cloud or self-hosted sync
- storage: A local database with sync; markdown export
- linking: Page links and mentions
- graph: No knowledge graph
- pricing: Free and open source; paid cloud plans
- platforms: macOS, Windows, Linux, iOS, Android, browser
- export: Markdown and CSV

### What AppFlowy does better

- Databases: grids, boards and calendars over structured records, which Nodum does not have.
- The closest open-source feel to Notion for a team migrating off it.
- Local-first with a native app on every platform.

### What Nodum does better

- Markdown files as the source of truth, with Obsidian-compatible import and export.
- Wikilinks, automatic backlinks with context, and unlinked mentions.
- A GPU-rendered knowledge graph.
- MIT rather than AGPL.
- An MCP server and an AI assistant on your own key.

### Switch if

- You want a personal knowledge base, not a database workspace.
- You want to see what links to what.

### Stay if

- You need Notion-style databases and views.

### Questions

**Which open-source Notion alternative should I choose?**

For Notion's databases and team pages, AppFlowy and AFFiNE are the closest. For personal knowledge management — linked notes, backlinks, a graph and plain markdown files — Nodum is the closer fit, and it is MIT licensed and self-hostable with one command.

## Nodum vs SilverBullet

URL: https://nodum.md/alternatives/silverbullet

Nodum and SilverBullet are the two self-hosted, browser-based markdown knowledge bases. SilverBullet is deliberately minimal and scriptable — plain markdown on disk, extended with Lua. Nodum is heavier: a Postgres-backed multi-tenant server with a GPU knowledge graph, real-time collaboration, publishing, an MCP server and an AI assistant.

### What SilverBullet is

SilverBullet is an MIT-licensed, self-hosted personal knowledge management system that runs in the browser over a folder of plain markdown files, extended through Lua scripting and a query language. It is lightweight, fast, and popular with people who want the smallest possible thing that works.

### SilverBullet facts

- license: MIT — genuinely open source
- hosting: Self-hosted; a single small server process
- storage: Plain markdown files on the server's disk
- linking: [[wikilinks]] and page references
- graph: No force-directed graph view
- pricing: Free; your own hosting cost
- platforms: Any browser, installable as a PWA
- export: The files are already markdown on disk

### What SilverBullet does better

- It is tiny. One process, a folder of files, and you are done — no Postgres, no Redis, no object store.
- Lua scripting and live queries let you build behaviour into pages.
- Files on disk means any other tool can read them at the same time.
- Genuinely offline-capable as a PWA.

### What Nodum does better

- A GPU-rendered knowledge graph, global and local.
- Multi-tenant: real accounts, multiple vaults, and per-user isolation rather than one person's folder.
- Real-time collaborative editing with presence.
- Publishing a vault as a public site, and per-note share links.
- An MCP server with 36 tools, and an AI assistant on your own key.
- Full-text search with operators, version history, and a web clipper.

### Switch if

- You want the graph, backlinks pane and unlinked mentions.
- More than one person needs an account.
- You want collaboration or publishing.

### Stay if

- You want the smallest possible deployment.
- Files-on-disk that other tools can read simultaneously is the requirement.
- You script your notes in Lua.

### Questions

**What is the best self-hosted web-based note-taking app?**

SilverBullet and Nodum are the two main browser-based, self-hosted markdown options. SilverBullet is the minimal one — a single process over a folder of files, extended with Lua. Nodum is the fuller one — accounts, vaults, a knowledge graph, collaboration, publishing, an MCP server — at the cost of running Postgres, Redis and object storage alongside it.

## Nodum vs RemNote

URL: https://nodum.md/alternatives/remnote

Nodum is an open-source alternative to RemNote for people who want linked notes without spaced repetition. RemNote is a proprietary outliner that turns notes into flashcards and schedules reviews. Nodum is MIT licensed, stores plain markdown, and focuses on wikilinks, automatic backlinks and a knowledge graph.

### What RemNote is

RemNote is a proprietary note tool built for students and researchers: an outliner where any line can become a flashcard, with a spaced-repetition scheduler, PDF annotation and citation handling built in. If you are studying for exams, that integration is the whole product.

### RemNote facts

- license: Proprietary, closed source
- hosting: RemNote's cloud, with offline support
- storage: A hosted document store; markdown export
- linking: [[references]], portals and tags
- graph: Graph view over rems
- pricing: Free tier with paid plans
- platforms: Browser, desktop, mobile
- export: Markdown and JSON

### What RemNote does better

- Spaced repetition integrated into the notes themselves — Nodum has nothing comparable.
- PDF annotation and citation workflows for academic reading.
- The outliner-plus-flashcard model is genuinely effective for exam study.

### What Nodum does better

- Free and MIT licensed, with no plan tiers.
- Plain markdown files with a clean export.
- A GPU knowledge graph, backlinks with context, and unlinked mentions.
- Self-hostable, so a research archive is not tied to a subscription.
- An AI assistant on your own key, and an MCP server.

### Switch if

- You stopped using the flashcards and are paying for a notes app.
- You want your research notes as files you control.

### Stay if

- Spaced repetition is why you use it.

### Questions

**Does Nodum have spaced repetition or flashcards?**

No. Nodum has no flashcard or spaced-repetition system, and no plans stated for one. If reviewing material on a schedule is central to how you study, RemNote or Logseq's flashcards will serve you better.

## Nodum vs Tana

URL: https://nodum.md/alternatives/tana

Nodum is an open-source alternative to Tana for people who want plain files rather than a structured graph database. Tana is a proprietary, subscription outliner built on supertags and fields, which is powerful for structured capture. Nodum stores markdown files, links them with wikilinks, and is MIT licensed and self-hostable.

### What Tana is

Tana is a proprietary outliner where nodes carry supertags and typed fields, so the same content can behave like a database, a task list and a note at once. It is genuinely novel and well liked by people doing heavy structured capture, and it is cloud-only and subscription-based.

### Tana facts

- license: Proprietary, closed source
- hosting: Tana's cloud; no self-hosting
- storage: A hosted structured graph, not files
- linking: Node references, supertags and fields
- graph: Structured views rather than a force-directed graph
- pricing: Subscription, with a limited free tier
- platforms: Browser, desktop, mobile
- export: JSON export; markdown export is limited

### What Tana does better

- Supertags and typed fields are more expressive than tags plus frontmatter.
- Structured capture and live views over your own schema.
- Voice capture and meeting workflows are unusually well built.

### What Nodum does better

- Markdown files with a real export, rather than a hosted structured graph.
- Free and MIT licensed, with self-hosting available.
- A force-directed knowledge graph, backlinks with context, unlinked mentions.
- No subscription and no per-seat cost.

### Switch if

- You want an exit that produces ordinary markdown.
- You are paying for structure you do not use.

### Stay if

- Supertags and typed fields are how your system works.

### Questions

**Is there a free, open-source alternative to Tana?**

Nodum is the closest for linked note-taking: free, MIT licensed, self-hostable, with wikilinks, backlinks, tags, YAML frontmatter properties and a knowledge graph. It does not replicate Tana's supertags and typed-field system, which has no direct open-source equivalent.

## Nodum vs Capacities

URL: https://nodum.md/alternatives/capacities

Nodum is an open-source alternative to Capacities. Capacities is a proprietary, cloud-hosted studio for the mind that organises everything into typed objects — books, people, ideas — with a daily note at the centre. Nodum stores plain markdown files, links them with wikilinks and tags, and is MIT licensed and self-hostable.

### What Capacities is

Capacities is a proprietary note app built on object types: rather than files in folders, every note is an object of some type with its own properties and views. Combined with a daily note and a clean interface, it appeals strongly to people who found folders limiting.

### Capacities facts

- license: Proprietary, closed source
- hosting: Capacities' cloud; no self-hosting
- storage: A hosted object store; markdown export
- linking: Object links and backlinks
- graph: Object graph view
- pricing: Free tier with a paid Believer plan
- platforms: Browser, desktop, mobile
- export: Markdown export

### What Capacities does better

- Typed objects give structure that tags and frontmatter only approximate.
- A very polished, calm interface and a strong daily-note workflow.

### What Nodum does better

- Markdown files you own, with a folder-true export.
- Free, MIT licensed and self-hostable.
- A GPU force graph over the whole vault, plus unlinked mentions.
- Obsidian-compatible import, so a vault moves in cleanly.

### Switch if

- You want your notes as files rather than objects in someone's cloud.
- Self-hosting or open source matters to you.

### Stay if

- Typed objects are the reason you use it.

### Questions

**Is there an open-source Capacities alternative?**

Nodum is the closest open-source fit for the linked-notes half of Capacities: MIT licensed, markdown files, wikilinks, automatic backlinks, tags with nesting, YAML properties, daily notes and a knowledge graph. It does not reproduce Capacities' typed-object model.

## Nodum vs Heptabase

URL: https://nodum.md/alternatives/heptabase

Nodum is an open-source alternative to Heptabase for people who connect notes with links rather than by arranging cards on a board. Heptabase is a proprietary, subscription visual note tool where whiteboards are the primary surface. Nodum is MIT licensed, markdown-based, and organised around wikilinks, backlinks and a knowledge graph.

### What Heptabase is

Heptabase is a proprietary tool for visual sensemaking: notes are cards you place on infinite whiteboards, grouping and connecting them spatially while you work through a topic. For literature review and research synthesis it is genuinely distinctive.

### Heptabase facts

- license: Proprietary, closed source
- hosting: Heptabase's cloud, with offline support
- storage: A hosted store with local cache; markdown export
- linking: Card links, backlinks and spatial grouping on whiteboards
- graph: Whiteboards rather than a force-directed graph
- pricing: Paid subscription with a trial
- platforms: Browser, desktop, mobile
- export: Markdown export

### What Heptabase does better

- Whiteboard-first thinking, which is a real and different way to work through a topic.
- PDF and highlight workflows for research reading.
- Card-on-board spatial memory that a force graph does not replace.

### What Nodum does better

- Free and MIT licensed rather than subscription-only.
- Plain markdown files with a folder-true export and Obsidian-compatible import.
- A force-directed knowledge graph over the whole vault, plus backlinks with context.
- Self-hostable, with collaboration, publishing and MCP included.
- Nodum has a canvas too — it is simply not the centre of the product.

### Switch if

- You want linked notes as the backbone, with a canvas available when you need one.
- You want to own the files and stop paying a subscription.

### Stay if

- The whiteboard is how you think through a problem.

### Questions

**Does Nodum have a whiteboard or canvas?**

Yes. Nodum includes freeform canvas boards alongside notes, so you can arrange cards spatially. It is not as central or as developed as Heptabase's whiteboards, which are the whole product there rather than one feature among many.


---

# Glossary

URL: https://nodum.md/glossary

## Linking

**Wikilink** (also: wiki link, double bracket link) — A link written as [[Note title]] that points at another note by its title rather than by a file path. Because the app resolves it, a wikilink survives the target being moved or renamed, and can be written before the target note exists. Variants add precision without adding ceremony: [[folder/Note]] disambiguates two notes with the same title, [[Note|alias]] changes the displayed text, [[Note#Heading]] targets a heading, and ![[Note]] embeds the content inline instead of linking to it.

**Backlink** (also: linked mention, reverse link) — The automatic reverse of a link. If note A contains a link to note B, then note B shows that A references it — usually with the surrounding sentence for context. You write one direction; the software maintains the other.

**Bidirectional link** (also: two-way link, backlinking) — A link that is visible and navigable from both ends. In practice it means writing a normal one-way link and having the software generate the return view, which is what makes dense linking cheap enough to sustain.

**Unlinked mention** — A place where a note's title appears as plain text somewhere else in the vault without being a link. Usually text written before that note existed. Reviewing unlinked mentions is the fastest way to connect an existing pile of notes.

**Unresolved link** (also: ghost node, dangling link) — A wikilink whose target note does not exist yet. It is valid, and it appears in the graph as a hollow node. Clicking it creates the note with the backlink already resolved, which makes 'write the link now, write the note later' a workable habit.

**Transclusion** (also: embed, note embed) — Including one note's content inside another so that it renders in place and updates when the source changes. Written as ![[Note]] or ![[Note#Heading]]. Distinct from copying, which forks the text and lets the copies drift.

**Block reference** — A link to a single block — usually one paragraph or bullet — rather than to a whole note. Roam, Logseq and Obsidian support them with ((id)) or ^id syntax. Document-oriented tools including Nodum generally do not, because the unit of meaning is the note.

**Knowledge graph** (also: graph view, note graph) — A visualisation in which every note is a node and every link is an edge, arranged by a force simulation so connected notes pull together. Its value is structural: it shows clusters, orphaned notes and gaps between areas of your thinking that search cannot surface.

**Local graph** — A graph restricted to the neighbourhood of one note — its links, their links, and so on to an adjustable depth. More useful than the global graph for day-to-day work, because it answers 'what is this note near?' rather than 'what does everything look like?'.

**Orphan note** — A note that nothing links to and which links to nothing. Some orphans are fine — a shopping list is not supposed to be connected. Others are ideas captured and then abandoned, and finding them is usually the point of filtering for them.

## Structure

**Vault** — One self-contained collection of notes, with its own folders, tags, links and graph. The term comes from Obsidian, where a vault is a folder on disk. In Nodum a user can own several vaults, and links resolve within a vault rather than across them.

**Frontmatter** (also: YAML frontmatter, properties) — A block of YAML at the very top of a markdown file, fenced by ---, holding structured properties: tags, aliases, dates, status, anything you want to query on later. It travels with the file, so the metadata does not depend on the app that wrote it.

**Nested tag** — A tag with hierarchy, written #parent/child. Searching the parent matches every child, which gives you a taxonomy without giving up the flatness that makes tags easy to apply. Both inline #tags and frontmatter tags can nest.

**Map of content** (also: MOC, index note, structure note) — A note whose body is mostly curated links, describing one region of a vault. It is the entry point into a cluster of notes — the digital equivalent of the hub cards Luhmann kept. Worth writing when a cluster gets too big to hold in your head, and not before.

**Daily note** (also: journal, daily journal) — One note per day, created automatically from a template, used as a capture surface. It removes the 'where does this go?' decision at the moment of writing, which is exactly when that decision is most expensive.

**Attachment** — A non-markdown file — an image, a PDF, an audio file — stored alongside notes and embedded with ![[filename]]. In Nodum attachments live in S3-compatible object storage and are served through presigned URLs.

## Method

**Second brain** (also: digital brain, external brain) — An external, searchable store of what you have read, decided and worked out, structured so past-you can hand something usable to future-you. The term was popularised by Tiago Forte; the practice long predates it.

**Zettelkasten** (also: slip box, slip-box method) — German for 'slip box'. A note method with three rules: one idea per note, written in your own words, and linked to related notes rather than filed by topic. Associated with the sociologist Niklas Luhmann, who used a paper version to produce a very large body of work.

**Atomic note** — A note containing exactly one idea. Atomicity is what makes a note linkable with precision and reusable in contexts you did not anticipate; a note holding six ideas can only ever be referenced as a lump.

**Evergreen note** — A note written to be rewritten — improved and re-argued over time rather than appended to and abandoned. The formulation is Andy Matuschak's, and it is the single most useful idea to take from the note-writing literature.

**Personal knowledge management** (also: PKM) — The practice of capturing what you encounter, connecting it to what you already know, and retrieving it when relevant. The connecting step is what separates it from simply keeping files, and it is the step most systems quietly skip.

**PARA** — Projects, Areas, Resources, Archive — an organising scheme that files notes by how actionable they are rather than by subject. Strong for active work; weaker as a long-term thinking archive, since 'archive' is where ideas go quiet.

**Networked thought** — The general name for working in a note system where structure comes from links between notes rather than from a folder hierarchy. Roam Research popularised the phrase; the tools in this category are sometimes called networked-thought or tools-for-thought apps.

## Writing

**Markdown** — A plain-text format with a light convention for structure — headings, emphasis, lists, links, code. It is readable without any software rendering it, which is why it is the format with the longest demonstrated shelf life for notes.

**Live preview** — An editing mode where markdown renders in place as you type, and the raw syntax reveals itself on the line your cursor is on. It replaces the older split-screen model of raw markdown beside a rendered preview.

**Reading view** — A fully rendered, non-editable view of a note — no syntax, no cursor, just the document. Useful for review and for sharing, and the view public published pages use.

**Callout** (also: admonition) — A styled block for asides, warnings and notes, written as a blockquote with a type marker: > [!note], > [!warning]. The syntax comes from Obsidian and is now widely supported. Nodum implements the full set with icons, colours and folding.

**Quick switcher** — A fuzzy search box, usually on ⌘O, that jumps to a note by title — and creates the note when nothing matches. The single most important capture affordance in a linked-note app, because it collapses 'find or make a note' into one keystroke.

**Command palette** — A searchable list of every command in the application, usually on ⌘P. It removes the need to memorise shortcuts or hunt through menus, and it is how most people discover what an app can actually do.

## Software

**Local-first** — Software where the primary copy of your data lives on your own device and the network is an optimisation rather than a requirement. Obsidian, Logseq and Anytype are local-first. Nodum is not — it is a server application, with self-hosting as the ownership story instead.

**Self-hosting** — Running the server software yourself, on hardware you control, rather than using a vendor's hosted instance. It removes vendor risk and per-seat pricing, and adds operational responsibility: backups, updates and TLS become yours.

**Open source** — Software published under a licence that permits reading, modifying, running and redistributing the source. Distinct from an open file format: Obsidian has an open format and closed source, while Nodum, Logseq and Joplin are open on both counts.

**Model Context Protocol** (also: MCP, MCP server) — An open protocol that lets AI clients — Claude Code, Claude Desktop, Cursor — call tools on an external system. Nodum is an MCP server with 36 tools over the same services and ownership checks the app uses, so an AI assistant can read, search, create and link notes in your vault.

**Full-text search** — Search across the body of every note, not just titles. Nodum uses PostgreSQL full-text search with a GIN-indexed tsvector, supporting path:, file: and tag: operators, quoted phrases and -exclusions.

**Web clipper** — A browser extension that saves a page — or a selection of one — into your notes with its source URL recorded. Nodum's is an MV3 Chrome extension backed by scoped, hashed, revocable tokens that can only create notes, so revoking one never touches your session.

**Canvas** (also: whiteboard, infinite canvas) — A freeform board where notes appear as cards you can arrange spatially and connect with lines. Useful for working through a problem visually. In Nodum it sits alongside notes rather than being the primary surface.


---

# Frequently asked questions

URL: https://nodum.md/faq

## The basics

**What is Nodum?**

Nodum is a free, open-source, web-based knowledge base. You write markdown notes, connect them with [[wikilinks]], get backlinks automatically, and explore the whole vault as a GPU-rendered knowledge graph. It is MIT licensed, runs in any modern browser, and can be self-hosted with one Docker Compose command.

**Is Nodum free?**

Yes. Nodum is free and open source under the MIT licence, with no paid tier holding features back and no per-seat pricing. You can use the hosted instance or run your own, in which case the only cost is the server you run it on.

**Is Nodum open source?**

Yes — the whole stack. The FastAPI backend and the Next.js frontend are both MIT licensed and published in one public repository, with no open-core split and no separate proprietary server. You can read it, fork it, audit it and run it.

**What does 'Nodum' mean?**

Nodum is Latin for 'knot' or 'node'. The name is the argument: notes are the knots, and the value is the rope between them — the links, not the individual pages.

**Do I need to install anything to use Nodum?**

No. Nodum runs in any modern browser, so a locked-down work laptop, a Chromebook, a borrowed machine and a phone all reach the same vault with nothing installed. It can also be installed as a PWA if you want it in its own window.

**Who is Nodum for?**

People who write a lot and want their notes connected: researchers, engineers, students, writers and anyone building a long-lived personal knowledge base. It suits you particularly if you want the software to be open source and the notes to be plain files you can take elsewhere.

## Coming from another app

**Can I import my Obsidian vault?**

Yes. Zip your Obsidian vault folder and import it from Settings → Vault → Import. Nodum resolves wikilinks across the whole batch rather than file by file, unwraps a redundant root folder, detects .obsidian config directories, imports .md, .markdown and .txt as notes, and brings PDFs in as attachments plus a note of their extracted text.

**Can I get my notes back out?**

Yes, at any time. Export produces a folder-true zip of .md files — the same shape an Obsidian vault is, and the same thing Nodum's importer accepts. There is also a versioned REST API and an MCP server if you want programmatic access.

**Does Nodum support Obsidian plugins?**

No. Obsidian plugins are written against Obsidian's own Node-level API, while Nodum's plugin API is capability-scoped and runs inside an opaque-origin sandboxed iframe — a deliberately different and narrower contract. If a specific plugin is central to how you work, Obsidian remains the right tool.

**How do I move from Notion or Evernote?**

Export to markdown first. Notion exports as Markdown & CSV with subpages; strip the page ids it appends to filenames before importing. Evernote exports as .enex, which a converter such as Yarle or evernote2md turns into markdown. Then zip the folder and import it into a Nodum vault.

## Features

**Does Nodum have a graph view?**

Yes — global and local, rendered on WebGL2 through a GPU force simulation, so it stays smooth into the tens of thousands of notes. Node size follows link count, unresolved links appear as ghost nodes you can click to create, and folder colours carry through from the explorer into the graph.

**What markdown does Nodum support?**

Obsidian-compatible markdown: wikilinks with paths, aliases, heading targets and embeds; the full callout set; YAML frontmatter; GFM tables and footnotes; task lists; KaTeX maths inline and block; Mermaid diagrams; and syntax-highlighted code fences. The editor is CodeMirror 6 with live preview, source and reading modes.

**Can two people edit the same note at once?**

Yes. Nodum has real-time collaborative editing per note using Yjs CRDTs over websockets, with presence, and it works across multiple API workers rather than only in a single-process deployment.

**Can I publish notes publicly?**

Yes, at two levels. Any note can get an unlisted public share link, revocable at any time. Any vault can be published as a public site at /s/your-slug, with working links between the published notes. Both are included rather than sold as a separate product.

**Does Nodum keep note history?**

Yes. Every save is snapshotted server-side, and you can browse and restore previous versions of a note from its version history. This is cheap to offer precisely because Nodum is server-based.

## AI and automation

**Does Nodum have AI features?**

Yes, and they run on your own API key. The assistant searches, reads, creates and extends notes in your vault, streams its replies with live tool status, and works with Claude, OpenAI, Gemini or Qwen. Keys are encrypted at rest and can be set per vault.

**Can Claude or Cursor work with my Nodum notes?**

Yes. Nodum is a Model Context Protocol server at /api/v1/mcp with 36 tools, using the same services and ownership checks as the app. Point Claude Code, Claude Desktop or Cursor at it with a per-user token and the AI can create vaults, write and link notes, colour folders, search, import and export.

**Are my notes used to train AI models?**

No. Nodum does not train models on your notes. The assistant sends only what a request needs to the model provider whose key you supplied, and if you self-host and point it at a local model endpoint, nothing leaves your network at all.

**Does Nodum suggest connections between notes?**

Yes. Alongside the links you write by hand, Nodum surfaces semantically related notes using pgvector cosine similarity over note embeddings, which finds connections you never made explicitly.

## Running it yourself

**Can I self-host Nodum?**

Yes, with one command. `./compose.sh prod up -d --build` brings up the API, PostgreSQL, Redis, MinIO and a Caddy edge proxy that provisions and renews TLS certificates automatically. Caddy is the only container that binds a host port, and schema migrations run in a one-shot container everything else waits on.

**What do I need to run Nodum myself?**

A machine with Docker or Podman, a domain pointed at it, and about an evening for the first deployment. A small VPS is sufficient for personal use. Deployment and backup runbooks are in the repository, and a smoke script drives signup, note creation and an attachment round-trip through the real proxy chain.

**Is my data private?**

Nodum is multi-tenant with ownership checks on every path, argon2id password hashing, refresh-token rotation with reuse defence, and rate-limited auth endpoints. If you want the strongest answer, self-host it: the notes then sit on hardware you control, under no third party's terms of service.


---

# Documentation

## Getting started

URL: https://nodum.md/docs/getting-started
Section: Start here
Where: The workspace, right after you sign in

What Nodum is, what you see when you sign in, and the three ideas — notes, links, the graph — everything else builds on.

## What Nodum is

Nodum is a place to write notes that connect to each other. Every note is a plain markdown file you own. Writing `[[Another note]]` inside one makes a link; the note on the other end shows it as a *backlink*; and all the links together form a graph you can look at and move around in.

That is the whole idea. The rest of the app exists to make writing, linking and finding fast.

![The workspace: ribbon on the left, files, the note you are reading, and panels about that note on the right.](/docs/workspace.png)

## What you see

From left to right:

- **The ribbon** — a thin strip of icons: new note, quick switcher, graph, daily note, command palette, and at the bottom Help and Settings.
- **The left sidebar** — your files (folders and notes), search, and bookmarks. The vault name at the top switches between vaults.
- **The middle** — tabs, and the note or graph or canvas each tab holds. Panes can be split side by side.
- **The right sidebar** — panels about the note you are reading: backlinks, outgoing links, tags, outline, a local graph, and the AI chat.

## The three things to try first

1. **Open a note** from the file list and type. It saves as you go — there is no save button.
2. **Type `[[`** and a few letters. Pick a note from the list. You have made a link; open the other note and look at its *Backlinks* panel.
3. **Press `⌘G`** for the graph. Your notes are the dots; your links are the lines.

## The tour and the demo

Your first sign-in offers a one-minute tour of the interface — a spotlight on each part of the real workspace, with a line about what it is for.

![The tour, lighting the file explorer.](/docs/tour.png)

Its last question is whether you want a **Demo Workspace**: a vault of 200 linked notes with coloured folders and graph groups already set, so you can see what a lived-in vault feels like before writing anything.

![The demo question.](/docs/demo-offer.png)

Both come back later: the tour from the `?` in the ribbon, the demo from Settings → Vault.

## Keyboard essentials

| Keys | Does |
| --- | --- |
| `⌘O` | Open any note by name |
| `⌘P` | Run any command |
| `⌘N` | New note |
| `⌘G` | Graph view |
| `⌘,` | Settings |
| `⌘[` / `⌘]` | Back / forward |

The full list is under Settings → Hotkeys, and in [Command palette & hotkeys](/docs/command-palette).


## Files and folders

URL: https://nodum.md/docs/files-and-folders
Section: Notes
Where: Left sidebar → first tab (the files icon)

The file explorer — creating, opening, moving, colouring and renaming notes and folders, and what the right-click menu can do.

## What it is

The explorer is the list of everything in the vault: folders, and the notes inside them. It is the same list the graph draws and search searches — there is no separate "library".

![The explorer, with a folder's right-click menu open.](/docs/explorer.png)

## Everyday use

- **Open** a note by clicking it — it opens in the tab you are in (a pinned tab is never taken over); `⌘`-click, or right-click → *Open in new tab*, for another tab.
- **Create** with the two icons at the top of the list (new note, new folder), or `⌘N` for a note. New notes land in the folder you last clicked in, or wherever Settings → Files & links says.
- **Rename** from the right-click menu, or double-click a note's title in the editor.
- **Move** with right-click → *Move file to…* (dragging a note into the editor inserts a link to it; it does not move it)
- **Collapse / expand** everything with the arrows icon at the top; the crosshair icon reveals the note you are reading.
- **Sort** with the arrows-up-down icon: by name, modified or created.

## The right-click menu

For a note: open in a new tab, to the right, or in a new window; duplicate; move; bookmark; merge into another note; copy path; version history; rename; delete. For a folder: new note or folder inside, colour, rename, delete.

## Colours

Right-click → *Colour* gives a folder or note one of seven colours. A folder's colour **flows down** to every note inside it that has no colour of its own — in the list, and in the graph, where those notes' dots take the colour too. That is the fastest way to make a graph readable: colour the top-level folders.

## Where the files really are

Every note is markdown. You can export the whole vault as a zip of `.md` files at any time (command palette → *Export vault*), and import a folder or an Obsidian vault the same way — see [Import and export](/docs/import-export).


## Writing notes

URL: https://nodum.md/docs/writing
Section: Notes
Where: The middle of the workspace; view switches at the top-right of a note

The editor — live preview, source and reading views, formatting, the right-click menu, tables, colours, and autosave.

## Three views of the same note

At the top-right of every note are three buttons:

- **Live preview** (the pencil) — markdown that renders as you type. Syntax like `**bold**` shows as bold, and only the line your cursor is on reveals its raw characters. This is the view you write in.
- **Source** (`</>`) — the plain text, nothing hidden. Useful when you want to see exactly what is stored, or paste something precise.
- **Reading** (the book) — the finished page. `⌘E` toggles between editing and reading.

![A note in live preview: headings, a list, wikilinks and a tag, rendered in place.](/docs/editor-live.png)

## Formatting

Type markdown, or use the shortcuts: `⌘B` bold, `⌘I` italic, `⌘K` link, `⌘⇧H` highlight. **Right-click** selected text for the full menu — headings, lists, callouts, tables, text colour and highlight colour, insert link, search for the selection, and the clipboard actions.

![The right-click menu on a selection.](/docs/editor-menu.png)

## Links

Type `[[` and start a name; pick from the list. See [Links and backlinks](/docs/links) for everything links can do, including aliases and links to headings.

## Tables

Insert one from the right-click menu → *Table*. In live preview it renders as a real grid you can type into; the row and column controls add and remove rows and columns, and `Tab` moves between cells. The source stays plain markdown.

## Text colour and highlights

Right-click → *Text colour* or *Highlight colour*. These are stored as small inline HTML in the markdown (only `span`, `mark`, `u`, `sup` and `sub` are allowed, with a colour) so they survive export and show in reading view.

## Saving

There is no save button. Changes save about a second after you stop typing, and again when you switch tabs or close one. Version history (right-click a note → *Version history*) keeps earlier states you can restore.

## Editor settings

Settings → Editor: default view for new tabs, font size, line numbers, readable line length, spellcheck, and fonts under Appearance.


## Links and backlinks

URL: https://nodum.md/docs/links
Section: Links & graph
Where: Type [[ in any note; the Backlinks panel is the first icon in the right sidebar

Wikilinks connect notes; backlinks show who links to the note you are reading; unresolved links create notes when clicked.

## Making a link

Type `[[` and a note's name. A list appears as you type — press `Enter` or click to complete it. In live preview the link shows as just the note's name; move the cursor into it to see and edit the target.

![The completion list that appears as you type a link.](/docs/wikilink-autocomplete.png)

Variants:

- `[[Note|shown text]]` — an alias: shows *shown text*, links to *Note*.
- `[[Note#Heading]]` — jumps to that heading; the hover preview and `![[Note#Heading]]` embeds show just that section.
- `[[Folder/Note]]` — a full path, when two notes share a name. In live preview only the note's name shows.
- `![[Note]]` — an embed: shows the other note's content inside this one. `![[image.png]]` embeds an image.

## Following a link

Click a link to open the note **in the same tab** — the back and forward arrows next to the breadcrumb bring you back. `⌘`-click opens a new tab. Hold `⌘` while hovering (or plain hover, depending on Settings → Files & links) for a preview card.

## Links to notes that don't exist

A link to a name with no note behind it is an *unresolved* link — dimmer, and a ghost node in the graph. Click it and the note is created and opened. That is how you write ahead of yourself: link to the idea now, fill it in later.

## Backlinks

Open the first panel in the right sidebar. It lists every note that links to the one you are reading, with the sentence around each link. Below it, *unlinked mentions* are places that use this note's name without linking — click one to open that note, where you can add the `[[ ]]` yourself.

![The Backlinks panel for a note.](/docs/backlinks.png)

There is also **Backlinks in document** (the note's ⋯ menu), which pins the same list under the note itself.

## Outgoing links

The second panel is the reverse: every link *from* this note, resolved or not.

## Renaming and links

Renaming or moving a note does **not** rewrite the notes that link to it: every `[[Old name]]` becomes an unresolved link (a ghost node in the graph) until you edit it — Nodum never changes your markdown behind your back. To keep the old links working, add the old name as an alias in the renamed note's frontmatter (`aliases: [Old name]`): links resolve through aliases, so they light up again.


## Graph view

URL: https://nodum.md/docs/graph
Section: Links & graph
Where: Ribbon → graph icon, or ⌘G. Local graph: right sidebar → the branching icon

The whole vault as a picture — notes as dots, links as lines — with filters, forces, colour groups, search, time travel and a local graph per note.

## What you are looking at

Every note is a dot; every link is a line between two dots. Dots with more links are bigger. Notes without links float at the edge. Unresolved links show as ghost dots — click one and the note is created.

![The graph of a vault, coloured by tag groups.](/docs/graph.png)

## Moving around

Scroll to zoom, drag the background to pan, drag a dot to move it (the rest keeps drifting gently while you hold it). Hover a dot: it and its neighbours light up, their names appear, and everything else steps back — dimmer, but still readable. Click a dot to open that note beside the graph.

**Hovering a file in the explorer, or a link in a note, makes that note's dot breathe in the graph** — so you can find where something sits without leaving what you were reading. The note you are typing in breathes too.

## The settings popover

The sliders icon at the top-right opens the controls.

![Graph settings: filters, display, forces, groups and time travel.](/docs/graph-settings.png)

- **Filters** — hide unresolved links, hide orphans.
- **Display** — arrows on links, node size, **text size** for the labels, link thickness.
- **Forces** — centre pull, repulsion, link strength, link distance. Drag a slider and the layout re-settles live.
- **Groups** — colour dots that match a query: `tag:#book`, `path:Projects`, `file:Daily`, or plain text. The demo workspace ships with thirteen.
- **Time travel** — a slider (and a play button) that reveals notes in the order they were created, so you can watch the vault grow.

The magnifier at the top-right filters by search — matches stay bright, the rest dims, nothing moves. The reset arrow restores every setting; the orbit icon rearranges the layout into a fresh sphere.

## Colours

Dots take a colour from, in order: the graph group they match, the folder colour that flows down to their note, or the default grey. Colour the top folders and the graph organises itself.

## Local graph

The right sidebar's branching icon shows just the note you are reading and its neighbours; a *Depth* slider (1–5) chooses how many steps out. It has no settings popover, search or reset of its own — it uses the main graph's saved settings and colours.

## Layouts are remembered

Close and reopen the graph and the dots are where you left them. New notes appear beside the notes they link to rather than shuffling everything.


## Tags

URL: https://nodum.md/docs/tags
Section: Links & graph
Where: Type # in a note; the Tags panel is the # icon in the right sidebar

Tags label notes across folders; the Tags panel counts them; nested tags make hierarchies; tag queries colour the graph.

## Adding a tag

Type `#` and a word anywhere in a note — `#project`, `#reading/2026`. A list of existing tags appears as you type. Tags can also live in a note's frontmatter under `tags:`.

Right-click a note in the explorer → *Tags* to pick an existing tag, or type a new one and press Enter, without opening the note.

## The Tags panel

![The Tags panel, with a nested tag expanded.](/docs/tags.png)

Every tag in the vault with how many notes carry it. Nested tags (`#area/health`) fold under their parent. Click a tag to search for it — the left sidebar switches to search with `tag:#name` filled in.

## Tags in the graph

A graph group with the query `tag:#book` colours every note tagged `#book`. That is how the demo workspace gets its thirteen colours — see [Graph view](/docs/graph).

## Tags in search

`tag:#name` in the search box, alone or with other words. Nested tags match their children: `tag:#area` finds `#area/health` too.


## Search and the quick switcher

URL: https://nodum.md/docs/search
Section: Finding things
Where: Ribbon → magnifier (⌘O). Search: left sidebar → second tab

The quick switcher opens a note by name in two keystrokes; search finds text inside notes with operators for path, file and tag.

## Quick switcher — `⌘O`

Type a few letters of a name; the best matches appear as you type. `Enter` opens the top one, `⌘Enter` opens it in a background tab, `⇧Enter` creates a new note with the name you typed. It forgives typos and matches on aliases too.

![The quick switcher after typing three letters.](/docs/switcher.png)

## Search — the left sidebar's second tab

Full-text search across every note, ranked, with the matching passage shown under each result. Sort by relevance, modified, created or title.

![Search results for a word.](/docs/search.png)

Operators narrow it:

| Operator | Finds |
| --- | --- |
| `path:Projects` | notes whose path contains `Projects` (case-insensitive) |
| `file:Weekly` | notes whose name contains `Weekly` |
| `tag:#book` | notes tagged `#book` (nested tags match) |
| `"exact phrase"` | that phrase |

They combine: `tag:#book path:Books stoicism`.

## From the editor

Select a word in a note, right-click → *Search for “…”* — the sidebar opens with that search run.

## Related notes

The Backlinks panel also lists *Related notes*, between the linked and unlinked mentions: notes whose text overlaps with this one (or, when the server is configured with an embeddings provider, notes that are about similar things). Useful for finding the note you forgot to link.


## Command palette and hotkeys

URL: https://nodum.md/docs/command-palette
Section: Finding things
Where: Ribbon → the command icon, or ⌘P. Hotkeys: Settings → Hotkeys

Every action in the app, searchable, from one box — and the keyboard shortcuts behind the common ones.

## The palette — `⌘P`

Type what you want to do: *split*, *export*, *daily*, *reading*. Every command in the app is here, including the ones without a shortcut, and commands added by plugins.

![The command palette, filtered.](/docs/palette.png)

Some commands only appear when they make sense — *Delete current note* needs a note open.

## Shortcuts worth learning

| Keys | Does |
| --- | --- |
| `⌘O` / `⌘P` | Quick switcher / command palette |
| `⌘N` | New note |
| `⌘G` | Graph view |
| `⌘E` | Toggle reading view |
| `⌘B` `⌘I` `⌘K` | Bold, italic, link |
| `⌘⇧H` | Highlight |
| `⌘W` | Close tab |
| `⌘\` | Split right |
| `⌘1`…`⌘8`, `⌘9` | Go to tab N / last tab |
| `⌘[` / `⌘]` | Back / forward |
| `⌘,` | Settings |

The complete list, searchable, is under Settings → Hotkeys, and behind Help → *Keyboard shortcuts*.


## Tabs, panes and navigation

URL: https://nodum.md/docs/tabs-and-panes
Section: Workspace
Where: The tab strip above the editor; back/forward arrows sit left of the note's breadcrumb

Tabs hold notes, the graph and canvases; panes split the window; back and forward walk your trail; pinned tabs stay put.

## Tabs

Each open note, graph or canvas is a tab. Following a link opens the note **in the tab you are reading in** — a session does not pile up tabs. `⌘`-click a link, or a note in the explorer, for a new tab.

![Two panes side by side, each with its own tabs.](/docs/tabs.png)

Right-click a tab: **Pin** (it sorts first, hides its close button, and links never take it over), split right, close. `⌘W` closes the current tab, `⌘1`…`⌘9` jump between them, and the palette has *close others* and *close this group*.

Drag a tab to reorder it, drop it on the far edge of the editor to split, or onto the other pane to move it across.

## Back and forward

The arrows beside the breadcrumb (`⌘[` / `⌘]`) walk where this pane has been — including through notes a link replaced. Closing a tab drops it from the trail; renaming a note updates it.

## Panes

`⌘\` splits the window in two. Each pane has its own tabs and its own history. Drag the seam to resize; *Split right* / *Split down* (in the palette, or the note's ⋯ menu) choose side-by-side or stacked. Closing a pane's last tab closes the pane.

## The breadcrumb

Above every note: the folders it sits in, then its name. Click a folder to reveal it in the explorer; click the name to rename.

## Layout is remembered

Open tabs, the split, sidebar widths and the current view come back when you return — **per vault**, so two vaults open in two browser tabs each keep their own.


## Vaults

URL: https://nodum.md/docs/vaults
Section: Workspace
Where: The vault name at the top of the left sidebar; Settings → Vault

A vault is a whole separate workspace — its own notes, folders, tags and graph. Switch, create, rename and delete them; each opens in its own browser tab.

## What a vault is

Everything you see — files, links, graph, tags, search — belongs to one vault. A second vault is a second, unrelated workspace. Nothing crosses between them.

## Switching

Click the vault name at the top of the left sidebar. Every vault you own is listed; picking one **opens it in a new browser tab**, so what you were doing stays where it was. Two vaults open side by side each remember their own layout.

![The vault switcher.](/docs/vault-switcher.png)

## Creating, renaming, deleting

*New vault…* in the same menu, or Settings → Vault, which also lists your vaults with rename and delete. Deleting removes every note in it and cannot be undone — and you cannot delete your last vault.

![Settings → Vault: your vaults, and the demo workspace button.](/docs/settings-vault.png)

## The Demo Workspace

Settings → Vault → *Create a demo workspace* makes a vault of 200 linked notes — topics, people, books, projects, daily notes, recipes — with coloured folders and graph groups already set. It is offered once when you first sign in; you can make one any time after. It is an ordinary vault: keep it, empty it, delete it.

## Per-vault settings

Daily-note format and folder, templates folder, attachment folder, new-note location, link style, publishing, collaboration and plugins are all set per vault, in Settings.


## Canvas

URL: https://nodum.md/docs/canvas
Section: Organising
Where: Left sidebar → Canvases (below the file list) → +

A free-form board of cards you place and connect — for thinking out loud, planning, or laying out an argument.

## What it is

A canvas is an infinite board. Cards on it hold text; lines between cards show relations you draw yourself. Where a note is a page and the graph is computed, a canvas is a picture you arrange by hand.

![A canvas with a few connected cards.](/docs/canvas.png)

## Using it

- **New canvas** — the `+` next to *Canvases* at the bottom of the file list, or the palette.
- **Add a card** — *Text card* / *Note card* in the canvas toolbar (top-left).
- **Move / resize** — drag a card; drag its bottom-right corner.
- **Connect** — click a card, then `⇧`-click the card to link it to.
- **Edit** — double-click a text card and type; `Esc` finishes.
- **Delete** — select a card and press `⌫` (its lines go with it).

Canvases save as they change and open in a tab like a note. Settings → Canvas chooses the background (dots, grid or blank).


## Daily notes and templates

URL: https://nodum.md/docs/daily-notes-templates
Section: Organising
Where: Ribbon → calendar icon; Settings → Vault for the format, folder and template

One note per day, created on demand from a template; templates for anything you write more than once.

## Daily notes

The calendar icon in the ribbon (or *Open today's daily note* in the palette) opens today's note — creating it if it does not exist yet. Where it goes and what it is called come from Settings → Vault: a **date format** (`YYYY-MM-DD` by default), a **folder** (`Journal`, say), and optionally a **template** note whose content seeds each new day.

The demo workspace is set up this way: its daily notes live in `Daily/`, and *Templates/Daily Note Template* fills in each new day.

## Templates

Keep templates in a folder (Settings → Vault → *Templates folder*, `Templates` by default). *Insert template* in the palette lists that folder's notes; pick one and its content is appended to the end of the note (or fills it, if the note is empty). Inside a template, `{{date}}`, `{{date:FORMAT}}` (e.g. `{{date:DD MMM YYYY}}`), `{{time}}` and `{{title}}` are filled in.

![The template picker.](/docs/templates.png)


## Bookmarks

URL: https://nodum.md/docs/bookmarks
Section: Organising
Where: Left sidebar → third tab (the bookmark icon); the bookmark icon above a note

Pin the notes you come back to — the bookmarks tab keeps them one click away.

## Bookmarking

Click the bookmark icon at the top-right of a note, right-click a note in the explorer → *Bookmark*, or use the palette (*Bookmark current note*, *Bookmark all tabs*).

## The Bookmarks tab

The third tab of the left sidebar lists them. Click to open; the icon on a note toggles it off again.

![The Bookmarks tab.](/docs/bookmarks.png)


## Import and export

URL: https://nodum.md/docs/import-export
Section: Organising
Where: Command palette → Import notes from a zip / Import a folder / Export vault

Bring in a folder of markdown, an Obsidian vault or a zip; take the whole vault out as a zip of markdown files at any time.

## Importing

From the command palette:

- **Import notes from a zip** — a zip of `.md` files, in folders. An **Obsidian vault** zipped whole works as-is: the wrapper folder is stripped, `.obsidian` settings for daily notes and the attachment folder are read, images and PDFs become attachments (a PDF also becomes a searchable note of its text), and `[[wikilinks]]` resolve across everything imported.
- **Import a folder** — pick a folder from your computer; same handling, no zip needed.

Names that collide get a suffix rather than overwriting.

## Exporting

**Export vault** downloads a zip of every note as `<path>.md`, folders preserved. It is your notes, as plain files; nothing is proprietary.

## Attachments

Paste or drag an image or PDF into a note and it uploads and embeds at the cursor as `![[name.png]]`. Images show inline; hovering an embed previews it. Files are capped at 5 MB, and only common image and document types are accepted.


## Publishing and sharing

URL: https://nodum.md/docs/publish
Section: Sharing
Where: The share icon above a note; Settings → Publish for the whole vault

Share one note by link, or publish a vault as a browsable site.

## Sharing a note

The share icon at the top-right of a note makes a public read-only link to that note. Anyone with the link can read it — no account needed. Turn it off from the same place.

![The share dialog for a note.](/docs/share.png)

## Publishing a vault

Settings → Publish turns the vault into a browsable site at `/s/<slug>` (the slug is made from the vault's name): every note except those whose frontmatter says `publish: false`, with navigation and wikilinks that work between pages. Unpublish from the same place; the site goes away immediately.


## Collaboration

URL: https://nodum.md/docs/collab
Section: Sharing
Where: Settings → Collab

Live editing with other people in the same note — cursors, presence, and changes that merge as they happen.

## Turning it on

Settings → Collab, per vault. Once on, a note open in two places — two browsers, two people — edits live: keystrokes appear as they are typed, each person's cursor shows in their colour, and nothing is lost when both type at once.

## What to know

Live sessions still save to the vault the ordinary way, so nothing depends on everyone staying connected. Undo is yours alone: `⌘Z` takes back what you typed, never what someone else did. If a live session cannot connect, the editor falls back to normal single-user editing after a few seconds rather than blocking you.

![Settings → Collab.](/docs/settings-collab.png)


## Community & forum

URL: https://nodum.md/docs/community
Section: Sharing
Where: The Community and Forum links in the site's top navigation

A built-in forum at /forum — announcements, help, bug reports, feature requests and showcases — and a community hub at /community that maps it all.

## What it is

Every Nodum deployment carries its own forum at `/forum` — the same idea as
Obsidian's forum, native to the platform — and a community hub at
`/community` that maps the forum, the ways to contribute, and the ways to
extend Nodum today (the API, MCP, the Web Clipper), with community plugins
on the roadmap. The forum has five fixed rooms:
**Announcements** (staff post, everyone reads), **Help**, **Bug Reports**,
**Feature Requests** (like the opening post to vote), and **Showcase**.

Reading needs no account: topics, threads, profiles and search are public
pages a search engine can index. Writing uses the account you already have —
there is nothing extra to join.

![The forum: categories on the left, the latest conversations on the right.](/docs/forum.png)

## Reading

**Latest** is the front page; **Top** ranks by replies over a week, month or
all time. Category pages float pinned topics first. Threads number every
post (`#12`) so links land mid-conversation, and a removed post leaves a
numbered placeholder — the thread's shape never shifts under you.

Signed in, topic lists show a dot on anything with posts you have not read
yet — it clears the moment you open the thread, and only ever moves forward.

## Writing

**New topic** asks for a category, a title and markdown. The preview tab
shows exactly what readers will get, because it runs the same renderer.
A deliberately careful renderer, since strangers read each other here:

- Markdown with GFM (tables, task lists, fenced code) — but raw HTML stays
  the literal text you typed, never markup.
- Images become links. A stranger's post cannot make your browser fetch
  anything.

Reply at the bottom of any unlocked thread. You can **edit** your own posts
(readers see an *edited* marker) and **delete** your own replies. A topic of
yours deletes only while nobody has replied — after that the conversation
belongs to everyone in it, and staff take over.

Like posts with the ♥. On Feature Requests, liking the opening post is the
vote.

## Search

`/forum/search` looks through every title and post, ranks by relevance
and highlights the matches; body hits deep-link straight to the post.

## Keeping it healthy

**Report** on any post sends it to the staff queue with your reason — once
per post per person. Staff can pin, lock, retitle, recategorize and remove
content anywhere, and work the queue at `/forum/mod`.

Staff is a flag operators grant: set `COMMUNITY_BOOTSTRAP_STAFF_EMAIL` in
the deployment's environment before first start (that account becomes staff
automatically), or later run `uv run python scripts/make_staff.py
person@example.com` from `back/`.

Posting has gentle speed limits — five topics and thirty replies an hour,
with a short gap between messages — enough for any human, boring for a bot.


## Web clipper

URL: https://nodum.md/docs/web-clipper
Section: Extending
Where: Settings → Web Clipper; the browser extension

Save a page from your browser straight into a vault as a note, with the source recorded.

## How it works

Settings → Web Clipper issues a **clipper token** — shown once. Put it in the browser extension (source in the repository under `clipper/`), and its button turns the page you are on into a note in the vault you choose, with the title, the page's text as markdown, and the URL and date in the note's frontmatter.

The token can list your vaults (so the extension can offer a picker) and create notes; it cannot read or change notes, and you can revoke it here without touching your login.

![Settings → Web Clipper.](/docs/settings-clipper.png)


## Plugins

URL: https://nodum.md/docs/plugins
Section: Extending
Where: Settings → Plugins

Small scripts that add commands and notices, run in a sandbox with only the permissions they ask for.

## What a plugin can do

A plugin registers commands (they show up in the palette), reads notes it is allowed to read, creates notes if it is allowed to, and shows notices. Each declares the permissions it needs; you see them before enabling it, and calls outside them are refused.

Plugins run in an isolated frame with no network and no access to the page — a plugin cannot see your session or another site.

![Settings → Plugins.](/docs/settings-plugins.png)

## Adding one

Settings → Plugins → paste the code and a small manifest, enable it.


## AI chat

URL: https://nodum.md/docs/ai
Section: Extending
Where: Right sidebar → the sparkles icon; Settings → AI to set it up

Chat with your own AI provider about your vault — it can search, read, create and extend notes. Your key, your account, your cost.

## Your key

Nodum has no AI of its own. Settings → AI: pick a provider (Claude, OpenAI, Gemini or Qwen), paste an API key from your account with them, choose a model. *Keys for* decides the scope: **your account** (every vault) or **only this vault** — a vault with a key of its own uses it instead of the account's, so one vault can run on a different provider, model or bill. The key is encrypted before it is stored, is never sent back to your browser, and is used only for requests you make. Usage is billed by the provider to you.

![Settings → AI.](/docs/settings-ai.png)

## Chatting

Open the sparkles panel in the right sidebar and ask. The reply is written as it arrives, and while the assistant is working in the vault you see what it is doing (*Searching the vault…*, *Writing a note…*). The note you are reading travels along as context, so *summarise this* works. The assistant can **search** the vault, **read** notes, **create** a note and **append** to one — and every note it writes shows up as a card in the chat that opens it. It cannot rename, overwrite or delete anything.

![The AI panel, after asking for a note to be written.](/docs/ai-chat.png)

Chats are saved per vault: the clock icon lists them, `+` starts a new one, and a reload brings back the one you were in.

## Not set up yet

Opening the panel without a key explains what is missing and takes you to Settings → AI.

Prefer to drive Nodum from your own AI tool instead? See [MCP — use Nodum from any AI client](/docs/mcp).


## MCP — use Nodum from any AI client

URL: https://nodum.md/docs/mcp
Section: Extending
Where: Settings → MCP for the token and the copy-paste setup

Nodum is an MCP server. Point Claude Code, Claude Desktop or Cursor at it with a token and the AI can do what you can — notes, links, search, import, export.

## What it is

The [Model Context Protocol](https://modelcontextprotocol.io) is how AI tools call other programs. Nodum speaks it: any MCP client — Claude Code, Claude Desktop, Cursor, and the rest — can connect and use **36 tools** that do what the app does. Ask your assistant to *"make a vault for the thesis, import these notes, link the chapters, colour the Sources folder blue"* and it does exactly that, through the same rules and the same ownership checks the app applies.

The AI chat inside Nodum (see [AI chat](/docs/ai)) is the other direction — Nodum calling a model with your key. MCP is your model calling Nodum.

## Setting it up

1. Settings → **MCP**. Copy the **server URL** — it is this site's address plus `/api/v1/mcp`.
2. **Create a token**, named after where it will live. It is shown once; copy it.
3. Paste the ready-made config for your client. Each one is generated with your URL and token filled in.

![Settings → MCP: the server URL, a token, and the client configs.](/docs/settings-mcp.png)

A token is a password for one program: it can do anything your account can, so treat it like one. Revoke it on this screen when the machine goes; the client stops working on its next call. Changing or resetting your password revokes every token too — mint new ones afterwards.

## Connecting a client

**Claude Code** — one command:

```
claude mcp add --transport http nodum https://your-nodum/api/v1/mcp --header "Authorization: Bearer nodum_mcp_…"
```

**Cursor** — in `~/.cursor/mcp.json`:

```json
{ "mcpServers": { "nodum": { "url": "https://your-nodum/api/v1/mcp", "headers": { "Authorization": "Bearer nodum_mcp_…" } } } }
```

**Claude Desktop** speaks stdio, so `mcp-remote` bridges it — in `claude_desktop_config.json` (the token rides in `env`: on Windows an `args` entry with a space in it gets split):

```json
{ "mcpServers": { "nodum": { "command": "npx", "args": ["-y", "mcp-remote", "https://your-nodum/api/v1/mcp", "--header", "Authorization:${AUTH_HEADER}"], "env": { "AUTH_HEADER": "Bearer nodum_mcp_…" } } } }
```

Anything else that supports Streamable HTTP with a bearer header works the same way. For a client that can only launch a **stdio** server, the repository ships a small bridge, `packages/nodum-mcp` (`node packages/nodum-mcp/bin/nodum-mcp.js` with `NODUM_URL` and `NODUM_TOKEN` in the environment) — it mirrors every tool and forwards each call to the HTTP endpoint, so the token never appears in an argument list.

Long tools report **progress**: an import of many files shows *Imported 10 notes…*, *Resolving links and tags…* in clients that display it (Claude Code does).

## What the tools are

| Area | Tools |
| --- | --- |
| Vaults | `list_vaults` `create_vault` `rename_vault` `delete_vault` |
| Folders | `get_tree` `create_folder` `rename_folder` `move_folder` `delete_folder` |
| Notes | `list_notes` `search_notes` `read_note` `create_note` `update_note` (replace / append / prepend) `rename_note` `move_note` `delete_note` `set_note_tags` |
| Links & graph | `link_notes` `get_backlinks` `get_outgoing_links` `get_graph` `list_tags` |
| Colours | `set_item_color` `list_item_colors` `set_graph_groups` |
| In & out | `import_markdown` (many files at once) `import_attachment` (an image or file, base64 → an embed) `list_attachments` `export_vault` (files, or a zip) |
| Also | `list_canvases` `create_canvas` `list_bookmarks` `bookmark_note` `daily_note` `list_templates` |

Notes are addressed by id, path (`Projects/Alpha`) or title, so a model can say what it means. Deleting a vault or a folder needs `confirm: true` — a model has to mean it — and the last vault cannot be deleted at all.

## An example session

> *You:* Make a vault called Reading, put a note in it for each of these three books with a line about why I want to read it, link them from a note called Shelf, and colour the vault's Books folder green.
>
> *The assistant* calls `create_vault`, `create_note` ×4 (three books plus *Shelf* with `[[…]]` links to each), and `set_item_color` — then tells you it is done, and it is. Open the vault: four notes, a backlink from *Shelf* on each book, a green folder, and the graph already drawn.

## What it cannot do

Nothing outside your account: the token resolves to you, and every tool goes through the same ownership check as the app. There is no way to reach another user's vault, and no way to change your password or delete your account through MCP.


## API — connect your own apps

URL: https://nodum.md/docs/api
Section: Developers
Where: Settings → API keys for the key and a ready-made curl

Create an API key and drive your vaults from any language over plain REST — list, search, read, write, link, unlink, tag, graph, even ask the AI.

## What it is

Everything the app can do to a vault, as a plain REST API: list and read
notes, create and edit them, search, link and unlink, tags, the graph,
attachments — and asking your vault questions through the AI provider you
configured. It is how a script, a cron job, a phone shortcut, or your own
product talks to Nodum.

[MCP](/docs/mcp) is for AI clients that speak a protocol; this API is for
**programs you write**. Same rules, same ownership checks, different door.

## Setting it up

1. Settings → **API keys**. Copy the **base URL** — this site's address plus
   `/api/public/v1`.
2. **Create key** opens a dialog: name the key after the program it is for
   and tick what it may do (the scopes).
3. The dialog then shows the key — **once** — beside a working `curl` with
   it already filled in. Copy either; paste the curl into a terminal and you
   have made your first API call.

![The new key, shown exactly once, with its ready-made curl.](/docs/settings-api-keys.png)

A key is a password for one program: treat it like one. Revoke it on this
screen when the program goes; it stops working on its next call. **Changing
or resetting your password revokes every key** — mint new ones afterwards.

## The 60-second start

```bash
curl -H "Authorization: Bearer nodum_key_…" \
  https://your-nodum/api/public/v1/vaults
```

Take a vault `id` from the answer and go:

```bash
# Search it
curl -H "Authorization: Bearer nodum_key_…" \
  "https://your-nodum/api/public/v1/vaults/<vault_id>/search?q=reading"

# Create a note (folders are created as needed)
curl -H "Authorization: Bearer nodum_key_…" -H "Content-Type: application/json" \
  -d '{"title": "From the API", "folder": "Inbox", "content": "Linked to [[Reading list]]."}' \
  https://your-nodum/api/public/v1/vaults/<vault_id>/notes
```

Every success is `{"data": ...}`; every error is
`{"error": {"code", "message"}}` with a stable `code`.

## Scopes

| Scope | What the key may do |
| --- | --- |
| `read` | List and read vaults, notes, links, tags, search, the graph. |
| `write` | Create and edit notes, link and unlink, tag, upload attachments. Write responses return metadata (id, path, timestamps) — never note bodies. |
| `delete` | Delete notes and attachments. |
| `ai` | Ask the vault questions. The AI's tools can also *write* notes — an `ai` key can change a vault even without `write`. |

A key without a scope gets `403` naming the missing one. Reads a key cannot
see — and anything that is not yours — are the same `404`: the API never
confirms what exists outside the key's reach.

## The interactive reference

The full reference — every endpoint, schema, and error, with a **try-it
client** — lives at [/api-reference](/api-reference). Paste a key into its
Auth box and requests run from the page, against your own vaults, with
generated snippets for shell, Python, JavaScript and more.

![The interactive API reference: endpoints on the left, schemas and a try-it client on the right.](/docs/api-reference.png)

## Going deeper

Two guides walk every endpoint with copy-paste requests and real responses:
[working with notes and files](/docs/api-notes) and
[search, links, tags and the graph](/docs/api-search-links) — and
[recipes](/docs/api-recipes) turns them into small working programs.

## Worth knowing

- **Addressing notes** — most endpoints take the note's `id`; `by-path` reads
  by exact path, and link targets accept an id, a path (`"Projects/Alpha"`)
  or an exact title. When two notes share a title, the API asks for the path
  rather than guessing.
- **Note lists and search paginate** — `limit` + `offset` in, `total` out.
  Capped collections (tags, attachments) return whole; quick-switch returns
  the top matches.
- **Concurrent edits** — send `base_updated_at` when replacing content; a
  stale write returns `409` with `details.server_updated_at` so you can merge
  instead of overwrite. `append`/`prepend` compose on the server against the
  current body, so two concurrent appends both land (prepend stays below the
  frontmatter).
- **Unlink edits markdown** — links *are* the `[[wikilinks]]` in the text, so
  unlinking splices them out. Only forms that unambiguously mean the target
  are touched (its path, a unique title, an alias no other note claims) — a
  namesake's links are safe. Embeds (`![[…]]`) and links inside code are
  content and stay — an embed keeps counting as a link until you edit it out.
  `removed: 0` still succeeds.
- **AI answers take time** — `POST …/ai/ask` runs the whole tool loop before
  answering; give your client a generous timeout (120s+).
- **Rate limits** — each key gets its own budget (300 requests/minute by
  default); over it is `429`.
- **Up to 10 live keys** per account, listed with only their last four
  characters — the full key exists in the create response and nowhere else.

## What it cannot do

Nothing outside the key's account: every call resolves to you and goes
through the same ownership checks as the app. There is no way to reach
another user's vault, and no way to manage keys, change a password, or
delete an account through the public API — that stays in the app.


## API guide: notes and files

URL: https://nodum.md/docs/api-notes
Section: Developers
Where: Base URL and keys live in Settings → API keys

Every notes and attachments endpoint with a copy-paste request and a real response — create, read, edit safely, move, tag, upload, delete.

Everything below assumes two shell variables:

```bash
NODUM=https://your-nodum/api/public/v1
KEY="nodum_key_…"        # Settings → API keys
```

and sends the key the same way every time: `-H "Authorization: Bearer $KEY"`.
Success is always `{"data": ...}`; errors are always
`{"error": {"code", "message"}}`. **Writes return metadata, never bodies** —
reading content back needs the `read` scope.

## Find your vault

```bash
curl -H "Authorization: Bearer $KEY" $NODUM/vaults
```

```json
{ "data": [ { "id": "0198…", "name": "Second Brain",
              "created_at": "2026-08-01T09:00:00Z", "updated_at": "2026-08-21T07:00:00Z" } ] }
```

Every other call takes that `id` in the path. `GET /vaults/{id}/tree` returns
the folder/note tree (titles only, no bodies) if you want the whole shape at
once.

## Create a note — `POST /vaults/{id}/notes` *(write)*

```bash
curl -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"title": "Standup 21 Aug", "folder": "Work/Standups", "content": "- Shipped [[Public API]]\n"}' \
  $NODUM/vaults/$VAULT/notes
```

```json
{ "data": { "id": "0198…", "folder_id": "0198…", "title": "Standup 21 Aug",
            "path": "Work/Standups/Standup 21 Aug",
            "created_at": "…", "updated_at": "…" } }
```

Missing folders in `folder` are created. A duplicate path is `409
already_exists`. `[[Wikilinks]]` in the content resolve immediately.

## Read — `GET /vaults/{id}/notes/{note_id}` or `/notes/by-path?path=…` *(read)*

The full note: `content`, `properties` (parsed frontmatter), `word_count`,
plus the metadata above. `by-path` takes the exact path
(`Work/Standups/Standup 21 Aug`).

## List — `GET /vaults/{id}/notes` *(read)*

`?folder=Work&limit=50&offset=0` — metadata only, most recently updated
first, `total` for pagination:

```json
{ "data": { "items": [ … ], "total": 128, "limit": 50, "offset": 0 } }
```

## Edit safely — `PUT /vaults/{id}/notes/{note_id}/content` *(write)*

Three modes:

- `{"content": "...", "mode": "replace"}` — the whole body. Send
  `base_updated_at` (the `updated_at` you last read) and a stale write
  returns `409 conflict` with `details.server_updated_at` so you can merge
  instead of overwrite.
- `{"content": "New line", "mode": "append"}` — added to the end. Composed
  on the server against the current body, so two clients appending at the
  same moment both land.
- `"mode": "prepend"` — added at the top, always *below* the frontmatter.

## Rename or move — `PATCH /vaults/{id}/notes/{note_id}` *(write)*

```bash
curl -X PATCH -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"title": "Standup 2026-08-21", "folder": "Archive/Standups"}' \
  $NODUM/vaults/$VAULT/notes/$NOTE
```

`"folder": ""` moves to the vault root. Links pointing at the note keep
working — Nodum re-resolves them.

## Tags — `POST /vaults/{id}/notes/{note_id}/tags` *(write)*

`{"add": ["work/standup"], "remove": []}` — edits the frontmatter `tags`
list; inline `#tags` in the body are never touched.

## Delete — `DELETE /vaults/{id}/notes/{note_id}` *(delete)*

Links pointing at the deleted note become unresolved ghosts in the graph.

## Files — `/vaults/{id}/attachments`

- `POST` *(write)* — multipart, field `file`:
  `curl -F "file=@diagram.png" …/attachments`. 5 MB cap, type checked by
  content. Embed it in a note with `![[diagram.png]]`.
- `GET` *(read)* — list: `{id, filename, mime_type, size_bytes, created_at}`.
- `GET …/{attachment_id}/url` *(read)* — `{"url": …, "expires_in": 300}`, a
  time-limited download URL.
- `DELETE …/{attachment_id}` *(delete)*.

## The errors you will actually see

| Code | Meaning |
| --- | --- |
| `unauthorized` (401) | Missing, mistyped or revoked key — or a password change revoked it. |
| `forbidden` (403) | The key lacks the scope; the message names which one. |
| `not_found` (404) | Not there — or not yours. Deliberately the same answer. |
| `already_exists` (409) | A note at that path already exists. |
| `conflict` (409) | Stale `base_updated_at`; `details.server_updated_at` says what won. |
| `validation_failed` (422) | Bad input; the message says what. |
| `rate_limited` (429) | Slow down — 300 requests/minute per key by default. |


## API guide: search, links & graph

URL: https://nodum.md/docs/api-search-links
Section: Developers
Where: Base URL and keys live in Settings → API keys

Full-text search with operators, fuzzy title matching, linking and unlinking notes, backlinks, tags and the knowledge graph — each with a working request.

Same setup as the [notes guide](/docs/api-notes): `$NODUM` is the base URL,
`$KEY` the API key, and every endpoint here needs only the `read` scope
unless marked *(write)*.

## Search — `GET /vaults/{id}/search`

```bash
curl -H "Authorization: Bearer $KEY" \
  "$NODUM/vaults/$VAULT/search?q=spaced%20repetition&limit=20"
```

```json
{ "data": { "query": "spaced repetition", "total": 7,
  "results": [ { "id": "0198…", "title": "Learning", "path": "Topics/Learning",
                 "snippet": "…the case for <mark>spaced</mark> <mark>repetition</mark>…",
                 "rank": 0.61, "created_at": "…", "updated_at": "…" } ] } }
```

The query language is the app's: `path:Folder` and `file:Name` narrow,
`tag:#name` filters by tag, `-word` excludes, `"a phrase"` matches exactly.
`sort` is `relevance` (default), `updated`, `created` or `title`;
`limit`/`offset` paginate with an honest `total`.

## Fuzzy titles — `GET /vaults/{id}/quick-switch?q=lear`

What ⌘O uses: cheap fuzzy matching over titles and frontmatter aliases —
`[{id, title, path, score, alias?}]`. Empty `q` returns the most recent
notes. Use it to resolve half-remembered names before a precise call.

## Link two notes — `POST /vaults/{id}/notes/{note_id}/links` *(write)*

```bash
curl -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"target": "Topics/Learning"}' \
  $NODUM/vaults/$VAULT/notes/$NOTE/links
```

```json
{ "data": { "from": "0198…", "to": "0198…",
            "inserted": "- [[Learning]]", "already_linked": false } }
```

`target` is an id, a path, or an exact title. Already linked? Nothing is
written and `already_linked` is `true` — safe to retry. `context` puts the
link in a sentence: `{"target": "…", "context": "Follows from {link}."}`.
When two notes share a title the API writes the path form (`[[Topics/…]]`)
— and if you *say* only the ambiguous title, it answers `422` naming a path
rather than guessing.

## Unlink — `DELETE /vaults/{id}/notes/{note_id}/links?target=…` *(write)*

Links *are* the `[[wikilinks]]` in the markdown, so unlinking edits the
markdown: every prose link that unambiguously means the target is spliced
out, and `{"removed": n}` says how many. Embeds (`![[…]]`) and links inside
code are content, not connections — they stay. `removed: 0` still succeeds.

## Reading the connections

- `GET …/notes/{id}/backlinks` — who links *here*:
  `{"backlinks": [{note_id, title, path, count, snippets: ["…the sentence around the link…"]}]}`.
- `GET …/notes/{id}/links` — links *from* here, resolved and unresolved.
- `GET …/notes/{id}/unlinked-mentions` — notes that mention this title
  without linking it: the "you should probably link these" list.

## Tags

- `GET /vaults/{id}/tags` — `[{name, count}]`, most used first.
- `GET /vaults/{id}/tags/{name}` — notes carrying a tag; nested tags match
  by prefix, so `projects` also finds `projects/api`.

## The graph

- `GET /vaults/{id}/graph` — the whole vault: `nodes` (notes and
  unresolved `ghost:` targets, with degree and tags) and `edges` as
  node-index pairs — the same data the in-app graph draws.
- `GET /vaults/{id}/notes/{note_id}/graph?depth=2` — the neighborhood
  around one note, 1–5 hops.

## Ask the vault — `POST /vaults/{id}/ai/ask` *(ai)*

```bash
curl -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"message": "Summarise what my notes say about spaced repetition."}' \
  $NODUM/vaults/$VAULT/ai/ask
```

Answers with `{conversation_id, title, reply, provider, model, actions}` —
`reply` is markdown, `actions` lists any notes the assistant created or
edited, and `conversation_id` continues the thread on the next call. Uses
the provider configured in Settings → AI (none configured → `404`). The
tool loop can take a while; give your client 120 s. And note the scope's
teeth: the assistant's tools can *write*, so an `ai` key can change a vault
even without `write`.


## API recipes

URL: https://nodum.md/docs/api-recipes
Section: Developers
Where: Each recipe says which scopes its key needs

Small working programs on top of the API — a shell capture alias, a Python daily-digest bot, a JavaScript backlink janitor — ready to paste and adapt.

Three complete programs, smallest first. Each one runs as-is once you fill
in the two constants at the top. Mint a key with **only the scopes the
recipe names** — least privilege is one checkbox away.

## 1. Capture from anywhere (shell · scopes: `read`, `write`)

An `inbox` command that appends a thought to today's inbox note — creating
it the first time — from any terminal:

```bash
# ~/.zshrc
NODUM=https://your-nodum/api/public/v1
NODUM_KEY="nodum_key_…"          # read + write
NODUM_VAULT="<vault id>"

inbox() {
  local day=$(date +%Y-%m-%d) body="- $*"
  local id=$(curl -s -H "Authorization: Bearer $NODUM_KEY" \
      "$NODUM/vaults/$NODUM_VAULT/notes/by-path?path=Inbox/$day" | python3 -c \
      'import json,sys;d=json.load(sys.stdin);print(d.get("data",{}).get("id",""))')
  if [ -z "$id" ]; then
    curl -s -H "Authorization: Bearer $NODUM_KEY" -H "Content-Type: application/json" \
      -d "{\"title\": \"$day\", \"folder\": \"Inbox\", \"content\": \"$body\"}" \
      "$NODUM/vaults/$NODUM_VAULT/notes" >/dev/null
  else
    curl -s -X PUT -H "Authorization: Bearer $NODUM_KEY" -H "Content-Type: application/json" \
      -d "{\"content\": \"$body\", \"mode\": \"append\"}" \
      "$NODUM/vaults/$NODUM_VAULT/notes/$id/content" >/dev/null
  fi
}
```

`inbox call the plumber` → one more line in today's inbox, from any shell.

## 2. A morning digest, written by your vault (Python · scopes: `read`, `ai`, `write`)

Asks the vault's AI for a summary of yesterday's edits and files it as a
note — run it from cron:

```python
#!/usr/bin/env python3
import datetime, json, urllib.request

NODUM = "https://your-nodum/api/public/v1"
KEY   = "nodum_key_…"          # read + ai + write
VAULT = "<vault id>"

def call(method, path, body=None):
    req = urllib.request.Request(
        f"{NODUM}{path}", method=method,
        headers={"Authorization": f"Bearer {KEY}", "Content-Type": "application/json"},
        data=json.dumps(body).encode() if body else None)
    with urllib.request.urlopen(req, timeout=180) as r:   # ai/ask can be slow
        return json.load(r)["data"]

yesterday = (datetime.date.today() - datetime.timedelta(days=1)).isoformat()
recent = call("GET", f"/vaults/{VAULT}/notes?limit=20")
edited = [n["title"] for n in recent["items"] if n["updated_at"][:10] == yesterday]

answer = call("POST", f"/vaults/{VAULT}/ai/ask", {
    "message": "Write a five-line digest of what changed in these notes yesterday: "
               + ", ".join(edited) if edited else "Say the vault was quiet yesterday."})

call("POST", f"/vaults/{VAULT}/notes", {
    "title": f"Digest {yesterday}", "folder": "Digests",
    "content": answer["reply"]})
print("filed", f"Digests/Digest {yesterday}")
```

## 3. A backlink janitor (Node.js · scopes: `read`, `write`)

Finds notes that *mention* a hub note without linking it, and links them:

```js
#!/usr/bin/env node
const NODUM = "https://your-nodum/api/public/v1";
const KEY = "nodum_key_…"; // read + write
const VAULT = "<vault id>";
const HUB = "Projects/Alpha"; // the note that should be linked from everywhere

const api = async (method, path, body) => {
  const r = await fetch(`${NODUM}${path}`, {
    method,
    headers: { Authorization: `Bearer ${KEY}`, "Content-Type": "application/json" },
    body: body && JSON.stringify(body),
  });
  const j = await r.json();
  if (!r.ok) throw new Error(j.error.message);
  return j.data;
};

const hub = await api("GET", `/vaults/${VAULT}/notes/by-path?path=${encodeURIComponent(HUB)}`);
const { unlinked_mentions } = await api("GET", `/vaults/${VAULT}/notes/${hub.id}/unlinked-mentions`);
for (const m of unlinked_mentions ?? []) {
  const res = await api("POST", `/vaults/${VAULT}/notes/${m.note_id}/links`, { target: hub.id });
  console.log(res.already_linked ? "already" : "linked", m.path);
}
```

## Habits that keep these robust

- **One key per program**, named after it, with only the scopes it needs —
  revoking one never breaks the others.
- **Treat 409 as information**: `already_exists` means create-once logic can
  be a plain retry; `conflict` means re-read, merge, re-send.
- **Remember the password rule**: changing or resetting the account password
  revokes every key. Cron jobs fail with `401` — mint fresh keys after.
- The [interactive reference](/api-reference) shows every endpoint with
  generated snippets in more languages — paste a key and try calls live.


## Settings

URL: https://nodum.md/docs/settings
Section: Account
Where: Ribbon → gear, or ⌘,

Where every preference lives, tab by tab — account, editor, appearance, files, hotkeys, vault, canvas, plugins, AI, MCP, clipper, publish, collab.

![Settings, on the General tab.](/docs/settings-general.png)

| Tab | What is there |
| --- | --- |
| **General** | Your name and password, the app version, the tour and the docs. Delete your account from here too — it asks for a code sent to your email. |
| **Editor** | Default view for new tabs, font size, line numbers, readable line length, spellcheck. |
| **Appearance** | Accent colour; interface, text and monospace fonts. |
| **Interface** | Show or hide the ribbon and the tab title bar. |
| **Files & links** | Where new notes go, attachment folder, wikilinks vs. markdown links, excluded paths, confirm before delete, whether page preview needs `⌘`/`Ctrl`. |
| **Hotkeys** | Every shortcut, searchable. |
| **Vault** | Your vaults (open, rename, delete, demo workspace); daily-note format, folder and template; templates folder. |
| **Canvas** | Board background. |
| **Plugins** | Installed plugins and their permissions. |
| **AI** | Provider, key, model, endpoint — for the account or for this vault only. |
| **MCP** | Token and client setup for driving Nodum from an AI tool. |
| **Web Clipper** | The clipper token. |
| **Publish** | Publish the vault as a site. |
| **Collab** | Live editing on or off. |

Account settings (General, Editor, Appearance, Interface, Hotkeys, AI, MCP, Web Clipper — and, on Files & links, *Confirm before deleting* and *Page preview requires ⌘/Ctrl*) follow you across vaults and devices; the rest are per vault. (AI keys can be either: the tab's *Keys for* switch picks the account or this vault.)

