Scoria
Early days · v0.1.0 · reading is solid, writing is young

Your vault, opened natively.

Scoria is a knowledge base written in Rust that opens an Obsidian vault exactly as it stands — the same folder, the same .obsidian configuration, the same Markdown, the same hotkeys.json. There is no import step, no conversion and no second copy of anything. It is an independent implementation, and it is not affiliated with Obsidian.

Free software under the MIT license, with the source on GitHub. Only the Linux build has been run on real hardware so far, and nothing is code signed — see where it is before you point it at a vault you care about.

The folder is the only source of truth

Scoria has no database, no sync service and no format of its own. It reads your Markdown files and writes them back. The rule the code is built around is that it never writes a file it did not change — and when it does write one, it changes only the bytes you edited.

Nothing moves

Open the folder you already have

Point Scoria at a vault and it scans it, reads .obsidian for your settings, and opens. Your notes stay where they are, named what they are named. Close Scoria and Obsidian opens the same vault, unchanged, with no reconciliation step.

Byte for byte

BOMs, CRLFs and unknown keys survive

A file's byte-order mark and its line endings are remembered when it is read and put back when it is saved. Keys in a JSON or YAML config that Scoria does not know about are carried through untouched rather than dropped, so a setting a newer Obsidian wrote is still there afterwards.

Local

No account, no network

There is nothing to sign in to. Scoria makes no network connection of its own: no telemetry, no update check, no license call. It is a program that reads a directory.

One parser behind everything

The editor, the reading view, the metadata cache and the link rewriter are all built on a single Markdown parser whose every node carries its byte span. That is why a rename can rewrite the links in a thousand notes and change nothing else in them, and why what you see while editing and what you see while reading cannot drift apart.

652/652CommonMark 0.31.2 spec examples, byte-identical HTML
1007/1009corpus notes rendering as Obsidian 1.13.7 renders them
244Obsidian command ids, with their default hotkeys
< 2 sto index a 20,000-file vault, cold

Both conformance suites are ratchets in CI: they are not allowed to go down. The two corpus notes that differ are nested-delimiter edge cases, listed in the manual. What matches and what does not →

What is in it today

Scoria is built in phases, and the gate for each is a sentence about a person rather than a feature list. Phase 2's gate — a daily user browses their real vault with no missing content — is met. Phase 3's, that a vault round-trips byte-identical after a week of mixed use in both apps, is the one being worked on now.

Reading Done

The whole three-pane shell

Files, reading view, Backlinks with unlinked mentions, Outgoing links, Outline, Tags, full-query Search, the quick switcher, the graph, the command palette, and a Settings modal that shows your real configuration. Files changed on disk re-index in place, and an open note reloads keeping its scroll position.

The window →

Writing In progress

Editing, and notes that move

Live Preview and Source mode with soft wrap, find and replace, multiple cursors, smart lists and autosave. New note, rename, move, copy and delete all rewrite the links in the rest of the vault the way Obsidian does, keeping each link's style and alias. Table editing, properties, autocompletion and templates are next.

Editing a note →

Parity Not started

Canvas, Bases, math, themes

The on-disk formats for Canvas and Bases are implemented and round-trip, but nothing draws them yet. MathJax, HTML in notes, remote images and PDF export are also still ahead, as is the variable-level subset of Obsidian's CSS custom properties that makes themes work.

What differs →

Plugins Planned

A native API, not a JS runtime

Obsidian's community plugins are JavaScript against an Electron app, and Scoria is not one, so they cannot run here and are out of scope. A native plugin interface of Scoria's own is the last phase; the 35 core plugins are being implemented as part of the app.

The four tiers →

Written clean, from a specification

Nothing here is copied out of Obsidian's bundle — no code, no CSS, no icons. The behavior was written down first, by observing a real Obsidian and reading its public documentation, and the implementation follows that document. Where the two disagree, a probe in a scratch vault settles it and the specification is the thing that gets corrected.

Evidence

Observed, not guessed

Command ids, setting keys, file names and link-resolution rules were captured from a running Obsidian with throwaway plugins that dumped what it actually does. The "same folder first" rule for ambiguous links turned out to be wrong that way, and got fixed.

Ratchets

A thousand notes, every build

A 1,009-note vault rendered by Obsidian is kept as expected output, and a second suite renames every note in it under every link format and checks that no link breaks, appears, disappears, or changes anything but itself.

Native

Rust and GPUI

The interface is GPUI, the GPU-accelerated toolkit from Zed. A 50,000-line note scrolls and types inside a frame budget because only the visible lines are ever shaped, and parsing happens off the UI thread.

How Scoria works →

Where it is, plainly

Scoria is v0.1.0 and the writing half is mid-flight. Keep a backup of any vault you open with it, and if the vault matters, let Scoria read it and let Obsidian write it until the round-trip gate is met. Reading a vault is well covered; editing is newer code against files you cannot get back.

Platforms

Linux is the tested one

Each release builds Linux x86-64, Windows x86-64 and macOS on Apple silicon, but only the Linux build has been started on a real GPU. The other two are compiled and linked by CI and otherwise unproven.

Signing

Unsigned, so the OS will object

Nothing is code signed or notarized. macOS Gatekeeper and Windows SmartScreen will both complain on first launch; the download page says how to get past each.

Not yet

Known gaps

Math renders as its source, HTML in a note shows as text, remote images do not load, Canvas and Bases files do not open, and Settings is read-only — Obsidian rewrites a whole settings file on every change, so writing them waits for the round-trip gate.