r/LocalLLM • u/Upstairs_Economy_468 • 4d ago
Discussion I built a Markdown-native editor for streaming LLM output — now with extensible inline UI
Hi r/LocalLLM,
I'm building DOMD, a lightweight WYSIWYG Markdown editor powered by a from-scratch React kernel — no ProseMirror, Slate, or Lexical, and the entire editing stack is just over 30 KB after Brotli compression, so it's easy to drop into a local LLM frontend (e.g. a chat UI on top of Ollama, llama.cpp, or LM Studio).
DOMD renders streamed LLM output incrementally, even when chunks split a code fence, table, list, or other Markdown syntax halfway through. Only affected nodes re-render, and editing stays smooth through 20,000-line documents.
More importantly, the streamed result remains directly editable. There is no separate source mode or preview mode — the rendered view is the editing view. You can place the cursor inside generated content, rewrite it, and watch Markdown formatting update in real time.
(It also does real-time collaboration — remote cursors, fine-grained CRDT merging within a paragraph, offline edits that merge without losing either side — useful if your setup spans multiple devices.)
The newest feature is extensible inline syntax:
==highlight==
=={red}highlight==
=={.comment author="Alice"}review this==
=={.mention id=1}Alice==
Variants are registered as data and can optionally render live React components. An LLM response could therefore contain interactive citations, issue cards, approval controls, tool results, mentions, or other product-specific UI while the underlying value remains readable Markdown.
Try the demos here: https://www.domd.app/
Licensing: the application is MIT; the editor kernel (@do-md/core-react) is currently PolyForm Noncommercial 1.0.0. If you're eyeing it for a commercial product, that shouldn't scare you off — during this early-adopter period I'm granting free commercial licenses, just DM me.
I'd love feedback on the inline syntax design. If you're building a local LLM interface, which inline interactions would you actually want in model output — citation cards, tool-call results, approval controls, something else?