Overview Docs All notes
Notes / Features

Features

Content & organization

  • Hierarchical folders — physical directories map to the navigation tree
  • Markdown as the source of truth — Git-friendly and portable
  • Wiki-links & backlinks — <span class="wiki-link wiki-missing">Note</span> with a backlinks panel
  • Per-note visibility — Private or Public share link

Editing

  • Rich editor — Vue 3 + Tiptap: headings, lists, quotes, code, images, tables
  • Code highlighting, task lists, math (KaTeX), Mermaid diagrams, GFM footnotes — all stored as plain Markdown
  • Images — paste / drag-and-drop with optional client-side compression
  • File attachments — upload any file type and insert it as a download link; non-inline types are served with Content-Disposition: attachment (RFC 5987 filenames)
  • Slash commands — type / for headings, lists, tasks, tables, math, diagrams, code
  • Outline (TOC) — scroll-linked table of contents
  • Table bubble menu — row/column controls above the active table
  • Focus mode (F9) — hides the top bar and sidebar and offers a floating Exit focus button in the bottom-right corner (Esc and F9 also leave it) — and a keyboard-shortcuts panel (?)
  • Create from the home empty state — the landing page offers New note / New folder, so a note can be started even when focus mode hides the sidebar
  • Full-text search — SQLite FTS5 with a custom CJK unigram + bigram tokenizer for real substring matching (e.g. 发模 matches 并发模型)
  • Global search with Ctrl/Cmd + K

AI-native

  • AI assistant — chat, organize and complete notes
  • AI agent (tool calling) — the assistant can execute in-app actions: read, search, write, move, rename and delete notes and attachments via OpenAI-compatible function calling. A bounded loop (8 steps by default) runs against a single capability source (internal/tools) shared with MCP. Dangerous actions pause for an explicit approve/reject with a human-readable preview; tools are trimmed by role and every call is audited with redacted arguments
  • MCP server — protocol 2026-07-28 (stateless _meta, server/discover, resultType) with backward compatibility, exposing 22 tools that mirror the CLI/REST API

Access & integration

  • Offline CLI — overview <command> runs the same operations directly against data/ with no server (notes, search, history, trash, assets, archives, static-site build)
  • Multi-user auth — bcrypt, sessions, roles, first-run setup; with authentication disabled (desktop/local single-user) the caller acts as the owner/admin, so every admin setting is reachable without a login
  • Desktop app — Wails v3 native window with tray, single instance, .md/overview:// integration, drag-and-drop, launch at login, first-run vault onboarding, and vault management (change / open the data directory, restart) under Settings → Desktop
  • Email accounts — invite users, email verification and password reset (SMTP configurable at runtime under Settings → Mail server), optional self-registration, and a customizable login page (notice, ICP, link)
  • WebDAV — mount the vault in Obsidian, Finder, or mobile apps
  • REST API — versioned under /api/v1, OpenAPI at /api/docs
  • PWA — installable app shell with a responsive mobile layout: a drawer sidebar (hamburger + backdrop), a phone-friendly top bar, full-width editor, horizontally scrolling toolbars, right-side panels as a bottom sheet (outline/backlinks/history/AI), a mobile search overlay, and touch basics (tap feedback, 16px inputs, ≥40px targets, 100dvh + safe-area insets)
  • Quick capture — paste a page URL in the top-bar dialog; the server fetches the title and body (SSRF-guarded) and saves it as a note in the folder you pick

Operations

  • Single binary with the frontend embedded (Docker or go run); multi-arch images on GHCR
  • Structured logging — JSON or text, to stdout and/or a size-rotated file
  • Portable archive — export/import the whole vault (notes + attachments) as a ZIP
  • Version history (with retention) and trash with restore
  • Live sync — a file watcher reindexes external edits
  • Pluggable assets — local filesystem or any S3-compatible store, switchable at runtime under Settings → Object storage (no restart; existing assets are not migrated)
  • Static export with a client-side search and sitemap.xml / robots.txt, rendered identically to the app's reading view (shared content.css + aligned DOM) with highlight.js/KaTeX/Mermaid vendored at the same versions and loaded on demand

Desktop sync

  • Desktop ↔ server vault sync — keep a desktop vault and a self-hosted server in step (Trilium-style client ↔ server). Identity is the frontmatter note id; a strong-ETag GET /api/v1/sync/manifest drives three-way reconciliation, then notes and attachments are pulled, pushed, deleted and moved
  • Real-time + incremental — changes stream over SSE (GET /api/v1/sync/events) with a cursor-based GET /api/v1/sync/changes (since note sequence + sinceTs tombstone time); the client reconciles on change and persists its cursor, with interval polling (default 60s) and file-watcher triggers as fallbacks
  • Empty folders sync — folder creates/moves/deletes share the note change sequence (migrations 0011/0012), so a folder with no notes still propagates
  • Faithful writes — sync stores the exact Markdown bytes (raw) with a baseVersion, so a concurrent edit is reported, never silently overwritten
  • No destructive merge — both-edited notes produce a <name> (conflict-<device>-<ts>).md copy that you resolve with keep local / keep remote in Settings → Sync
  • Direction — both/pull/push; the token is kept in .sync-token (owner-only) and remote servers must be HTTPS
  • Attachments anywhere — synced by vault-relative path, including on S3 backends; an oversized attachment is skipped with a warning rather than failing the sync
  • Console-less desktop build — Windows uses the GUI PE subsystem (-H=windowsgui) and logs to <DataDir>/logs/desktop.log

Appearance & settings

  • Gridea-style palette — warm amber accent (#D4870E) with light and dark variants, shared with the exported static site
  • Custom accent color — pick a preset or any hex; the UI derives a light/dark ramp
  • Standalone settings page (/settings) — appearance, editor, AI, mail, site, object storage, data, user management and API tokens

Performance & UI

  • Fast first load — routes are code-split and static assets are gzip-compressed with long-term caching (Lighthouse 99; initial JS ~154 KB)
  • Resizable sidebar with stable hover states and tooltips for long names
  • Compact sidebar (15px notes / 13px folders) and a soft warm theme with a clear hierarchy

See MCP and AI for integration details.