Self-hosted · Obsidian-compatible · Open source

Think on a canvas.
Keep it in markdown.

A canvas-first notebook over a plain markdown vault — spatial where a folder tree is flat, and yours in files that outlive the app.

Sign in Source coming soon
Ideas refines Canvas design Link surfacing Search ranking Semantic search

Canvas-first

An infinite canvas is the primary surface, not a folder tree. Place notes where they make sense, draw the connections, group what belongs together, auto-arrange, or present them one by one.

It's just markdown

Every note is a plain .md file with YAML frontmatter. The app and Obsidian are two writers of the same vault — your notes open anywhere and outlive the app.

Search by meaning

Optional local embeddings (Ollama · bge-m3) find notes by concept, not just keyword, and surface links you never made. Turned off? Fast full-text search still works.

Living connections

Wikilinks become candidates on the canvas; label a connection or promote it to an edge. Near-duplicate and related-section detection help you fold scattered notes into one.

Keyboard-first

Navigate, create, link, read and present without reaching for the mouse. The canvas is built to be driven from the keys.

Private by default

Runs in Docker on your own box, behind one login. No accounts to create, no cloud, no telemetry — one person's vault, and it never leaves the machine.

Back up vault/. Delete everything else.

The search index and embeddings are derived state — they rebuild themselves. Only your markdown is precious, and it's just files on disk.

Open the app →

Built with React + React Flow · CodeMirror · Hono · SQLite + sqlite-vec · Ollama