Sunstone is a desktop markdown editor with the knowledge-base features you'd otherwise assemble from plugins: live preview, wikilinks, backlinks, properties, tags, and full-text search. It opens a plain folder of markdown files. Your repo is the sync layer; you diff, review, and collaborate through git commits instead of a sync service.
No vault to create, import, or convert into. Sunstone runs against any folder
of markdown files. Point it at your notes, a docs repo, or a cloned knowledge
base and start editing. Files stay plain .md on disk. Nothing gets indexed
into a database you can't grep.
Prefer a browser tab to a window? sunstone serve ./notes serves the same
editor at http://localhost:3000/ (--port to change it). It listens on
localhost only and needs no sign-in, and edits save to disk just as they do
in the app.
Sunstone implements the Open Knowledge Format (OKF), Google's open standard for sharing knowledge as markdown bundles.
OKF is minimal by design: a directory of markdown files with YAML frontmatter
describing typed concepts. No schema registry, no central authority, no
required tooling. If you can cat a file you can read OKF; if you can
git clone a repo you can ship it. Humans, agents, and other editors all read
the same files, with nothing to migrate.
Sunstone's frontmatter model (the typed-concept type / title / tags
fields, reserved files, and bundle structure) conforms to the OKF spec:
- Upstream spec: https://github.com/GoogleCloudPlatform/open-knowledge-format/blob/main/SPEC.md
- Vendored copy in this repo:
docs/okf/spec.md
- Live preview. Obsidian-style hybrid editing. Inactive lines render styled, the cursor line shows raw markup. Syntax-highlighted fenced code, task lists, and interactive GFM tables.
- Wikilinks and backlinks. Follow links between concepts. Every concept shows which others link to it.
- Properties panel. Edit typed frontmatter as structured fields (scalars, lists, tags). Complex YAML round-trips verbatim.
- Review changes. Toggle a diff of the working tree against
HEAD, or step back through history. Word edits render as CriticMarkup track-changes. - Tag browser. Browse and filter the bundle by tag, with live counts.
- Full-text search. Search every concept, with snippet results.
- Quick-nav palette. Jump to any concept by fuzzy name match.
- Outline panel. A live heading outline of the open concept.
- Annotations. Select text and choose Add comment from the right-click
menu (or press
Ctrl/Cmd+Alt+M) to attach a margin comment. Works in reading mode too. The highlighted span is marked, a comment icon sits in the gutter, hovering shows the note, and clicking the icon reopens the popup to edit or remove it. On disk each note is plain CriticMarkup ({==text==}{>>note<<}), so comments travel in git and any other tool can read them. Useful for leaving feedback on generated docs for an agent's next pass. - Right sidebar. A second, collapsible sidebar housing Backlinks.
- Light and dark theming. A warm amber palette that follows the OS color scheme.
A concept open against a real OKF bundle, with Explorer, Properties, live preview, Outline, Backlinks, and the Tag browser on screen.
Margin comments on an implementation plan: highlighted spans, gutter comment
icons, and a hovered note. The annotations are CriticMarkup in the underlying
.md; the editor renders them out of the text flow.
Sunstone is built with Tauri, SvelteKit, and TypeScript.
bun install # install dependencies
bun run tauri dev # run the desktop app
bun run build # build the static SPA
bunx playwright test # run the end-to-end suiteSunstone also ships as a single Docker image that serves a Bundle in the browser. The base deployment is read-only: no write secret, unauthenticated reads. A git-synced stack runs it writable, with every save committed and a sync loop reconciling against your git remote (the server clones your origin and syncs it itself, no sidecar).
docker/README.md covers the docker compose run, the
internal-network / unauthenticated-reads caveat, the three deployment shapes
(plain / git-local / git-synced) with the environment reference, and how to
publish the image to GHCR and install it on a remote. This is separate from
the desktop release flow.
MIT



