LOCAL-FIRST MARKDOWN EDITOR

The editor that never phones home.

Parsing, sanitizing and highlighting run in Rust, off the keystroke path. Files open from and save to your own disk. There is no account, no document server and no telemetry.

SPECIFICATION

Typing latency
1.6 ms
Incremental render
2.4 ms
Document servers
0
Telemetry events
0
Accounts
0
First load
1.2 MB
Repeat load
from cache
Price
Free
FIG. 01 — the editor, live. Type in the left pane.
field-notes.md — ~/Documents ● saved to disk
MARKDOWN
PREVIEW
Demo renders in this page. The app renders in Rust/WASM, incrementally. render
01 / LATENCY

Only the part you changed.

A keystroke does not re-render the whole document: ScribeOps finds the block that changed and updates only that part of the preview. Measured in Chrome on identical files. marked is included as a reference point — it parses Markdown only, and does not include the sanitizing or highlighting ScribeOps does in the same pass.

DocumentTyping latencyIncremental rendermarked (parse only)
1,000 lines1.6 ms2.4 ms6.4 ms
10,000 lines19 ms13 ms49 ms
100,000 lines188 ms125 ms410 ms

Typing latency is the cost of one keystroke. Incremental render is the cost of redrawing the edited block. Run them yourself on the benchmark page.

02 / CUSTODY

Your words stay yours.

Nothing you write is uploaded, scanned, or used to train a model. Your documents are plain markdown files on your own disk — readable today, and readable long after ScribeOps is gone.

Keystroke Rust / WASM, in the tab Your disk Network
Storage Real files on disk

Open and save actual .md files through the File System Access API.

Recovery Version history

Every file keeps version snapshots you can restore. Separate crash-recovery drafts survive a closed tab.

Safety Sanitized rendering

Every document is sanitized in Rust before it touches the page. No injected markup.

Supply chain No CDNs

Every dependency is served from the app's own origin, enforced by a strict CSP.

Sharing No server needed

A shared document travels inside the link itself. Nothing is stored anywhere.

03 / THE EDITOR

A place to focus.

The tools you need and nothing you don't. Focus mode dims everything but the line you're on. Syntax highlighting keeps the markup legible. A command palette keeps your hands on the keyboard.

FOCUS MODECtrl + Shift + F
## Interview — 14 Aug   She described the handoff as “three teams and one spreadsheet”, which is roughly what the logs show as well. The fix is smaller|   - [ ] pull the Q3 numbers
FIG. 02 — Typewriter centring; everything but the current line dims.
COMMAND PALETTECtrl + P
> tog|
Toggle focus modeCtrl+Shift+F
Toggle sync scroll
Toggle theme
Toggle line numbers
17 commands · ↑↓ to move
FIG. 03 — Every action is reachable without the mouse.

Syntax highlighting

Headings, emphasis, code, math and frontmatter, coloured in the editor itself.

Editor, preview, or both

Use the two panes side by side, or give either one the whole screen.

Real math

LaTeX rendered in the preview, in exports, and in print.

Diagrams

Mermaid flowcharts and sequence diagrams, written as text.

04 / OUTPUT

Ship it anywhere.

Write once. Export a self-contained HTML file, paste rendered text straight into Gmail or Notion, print a clean PDF, or take the plain .md and go.

Styled HTML
one file, images inlined
Rich text
clipboard, formatting kept
Print / PDF
page breaks before sections
Raw markdown
or a JSON archive

Interview — 14 Aug

She described the handoff as “three teams and one spreadsheet”, which is roughly what the logs show as well.

σ = √( Σ(x − μ)² / N )

The fix is smaller than it looks: one owner, one queue, and a weekly read-out that nobody has to assemble by hand.

FIG. 04 — The print layout. Same document, no reflow surprises.
05 / OFFLINE

Works on a plane.

ScribeOps installs to your dock or home screen and runs with no connection. The heavy parts load only when a document actually asks for them.

PAYLOAD● offline — all features available
Editor + renderer — once, then cached1.2 MB
KaTeX — only if the document has mathon demand
Mermaid — only if it has a diagramon demand

Gzipped, measured on the built app. The service worker registers after the editor is interactive, so caching never competes with your first keystroke; after that the app shell loads from cache in about 250 ms, on any network.

06 / WHO IT'S FOR

Engineers writing docs

RFCs, runbooks and READMEs that live in the repo next to the code, with diagrams that are diffable text.

Researchers and students

LaTeX that renders as you type, in a file you can hand to a supervisor as HTML or PDF without a toolchain.

Anyone keeping notes

Journals, meeting notes and half-formed ideas that should never be sitting on somebody else's server.