Top
Best
New

Posted by OlaProis 1/11/2026

Show HN: Ferrite – Markdown editor in Rust with native Mermaid diagram rendering(github.com)
Ferrite: Fast Markdown/Text/Code editor in Rust with native Mermaid diagrams

Built a Markdown editor using Rust + egui. v0.2.1 just dropped with major Mermaid improvements:

→ Native Mermaid diagrams - Flowcharts, sequence, state, ER, git graphs - pure Rust, no JS

→ Split view - Raw + rendered side-by-side with sync scrolling

→ Syntax highlighting - 40+ languages with large file optimization

→ JSON/YAML/TOML tree viewer - Structured editing with expand/collapse

→ Git integration - File tree shows modified/staged/untracked status

Also: minimap, zen mode, auto-save, session restore, code folding indicators.

~15MB binary, instant startup. Windows/Linux/macOS.

GitHub: https://github.com/OlaProeis/Ferrite

v0.2.2 coming soon with performance improvements for large files. Looking for feedback!

241 points | 190 commentspage 3
FloatArtifact 1/11/2026|
Any interest in a plugin system similar to Obsidian?
OlaProis 1/11/2026|
Definitely interested in the concept! Though it's not on the immediate roadmap.

A few thoughts: - Obsidian's plugin system is JavaScript-based, which makes sense for Electron. For a native Rust app, we'd likely want something like WASM plugins or Lua scripting. - v0.3.0 includes plans to extract the Mermaid renderer as a standalone crate and potentially the editor widget as a library — this modular architecture would be a foundation for future extensibility.

What kinds of plugins would you want? Knowing specific use cases would help prioritize. Custom renderers? File format converters? External tool integrations?

In the meantime, Ferrite has a "Live Pipeline" feature that lets you pipe JSON/YAML through shell commands (jq, yq, etc.) — not a full plugin system, but useful for custom transformations.

FloatArtifact 1/12/2026||
> Definitely interested in the concept! Though it's not on the immediate roadmap. > > A few thoughts: - Obsidian's plugin system is JavaScript-based, which makes sense for Electron. For a native Rust app, we'd likely want something like WASM plugins or Lua scripting. - v0.3.0 includes plans to extract the Mermaid renderer as a standalone crate and potentially the editor widget as a library — this modular architecture would be a foundation for future extensibility. > > What kinds of plugins would you want? Knowing specific use cases would help prioritize. Custom renderers? File format converters? External tool integrations? > > In the meantime, Ferrite has a "Live Pipeline" feature that lets you pipe JSON/YAML through shell commands (jq, yq, etc.) — not a full plugin system, but useful for custom transformations.

Personally, I think there's two plugins I would really want.

1. Peer-to-peer syncing of notes. I do hope there will be a mobile version someday of your app. Most of my quick jotting of notes happens on mobile and heavy editing happens on traditional laptop/desktop. It would be nice just to scan a QR code to pair up devices and away we go. Optionally a small binary to be the sync server for self host for hub and spoke design. I love Git integration, but we want to take this at a level for those that aren't technically inclined.

2. A robust API for tool integration. Being able to plug in external tools is super helpful for streamlining workflows. In addition I've used it to make accessibility tools integrate for command and control.

I do like the fact that Obsidian has vaults that are essentially separate profiles that have separate vaults location settings and plugins.

OlaProis 1/12/2026||
Mobile is definitely a long-term goal, the lightweight binary and native performance would translate well. Your QR-code pairing idea is elegant for non-technical users.

For sync, I've been thinking about:

- Git-based sync for power users (already have git integration)

- Simple local network sync (mDNS discovery, no cloud required)

- Optional relay server, as you described — small binary for hub-and-spoke

The plain-file approach (no proprietary format) makes this tractable since any sync tool works today (Syncthing, Dropbox, etc.). But a native, frictionless solution would be better.

2. Tool Integration API

This aligns with v0.3.0's direction. The plan is:

- Mermaid crate extraction, establishes the modular pattern

- Editor widget as library, opens up embedding

- Command palette / IPC, could expose operations to external tools

For accessibility specifically, what interfaces work well for you? Shell commands? Named pipes? JSON-RPC? Knowing your workflow would help prioritize.

3. Vaults/Profiles

Good point — workspace settings are currently per-folder (`.ferrite/`), but there's no concept of isolated plugin configurations per vault. Added to the consideration list.

Thanks for the detailed feedback!

bovermyer 1/11/2026||
Very cool. The one thing that prevents me from trying this out as a potential note-taking daily driver is the lack of support for LaTeX.

I recently switched from Obsidian to Zettlr due to some rendering and performance issues on Linux, and it's been a great experience. However, I always like to see new entrants in the arena.

OlaProis 1/11/2026||
LaTeX support is a reasonable request! It's not on the immediate roadmap, but here's my thinking:

Options considered: - KaTeX/MathJax-style rendering (would need a Rust math renderer or JS bridge) - Typst integration (Rust-native, modern alternative to LaTeX) - External tool pipeline (render via pandoc/LaTeX CLI)

Typst is interesting since it's also Rust-based and simpler than full LaTeX. Would inline math ($x^2$) and display math ($$...$$) cover your use case, or do you need full document features?

Added to the roadmap consideration list. Thanks for the feedback!

bovermyer 1/11/2026||
I only need inline+display math, I don't need the full document features.
OlaProis 1/11/2026||
Good to know! Inline + display math is a more tractable scope. Typst or a Rust KaTeX port could handle that without needing full LaTeX. Added to the consideration list with that clarification.
fmichel42 1/12/2026||
Agreed. Having an open-source alternative to (the otherwise excellent) Typora would be fantastic; as far as I can tell the main feature Ferrite is currently lacking to be used for most (all?) applications where I use Typora is a way to easily write and render maths formula. (As far as I am concerned, support for TeX math would be ideal due to wide support from the existing ecosystem; but Typst would work too.)
OlaProis 1/12/2026||
Thanks! TeX math support ($...$ and $$...$$) is planned for v0.4.0. We're going pure Rust (no JS runtimes), targeting common LaTeX syntax. See the planning doc on github (docs folder) for details.
napoleongl 1/11/2026||
Looks interesting! I’m discouraged from using mermaid and D2’s online playground for privacy reasons and have hand on my roadmap to get a local editor. This might be it! Does it support theming of mermaid diagrams, I noted the style keywords were in the roadmap still.
OlaProis 1/11/2026|
Great catch! Mermaid styling syntax (style and classDef directives) is on the roadmap for v0.3.0. Currently the diagrams render with Ferrite's theme colors (light/dark).

For privacy, you're in the right place — Ferrite's Mermaid rendering is 100% native Rust, no JavaScript, no external services, no network calls. All ~6000 lines of diagram rendering happen locally. We're even planning to extract this as a standalone crate so others can use it.

nico_h 1/11/2026||
It’s a cool name but there is already another project called ferrite, related to audio recording. https://www.wooji-juice.com/products/ferrite/
OlaProis 1/11/2026|
Thanks for flagging this! You're right — Wooji-Juice's Ferrite is a well-known iOS audio recording app.

The name collision is unfortunate. We picked "Ferrite" for the magnetic/persistent storage connotation (ferrite cores were early computer memory). Different domain (text editor vs audio), different platforms (desktop vs iOS), but I understand the SEO/discoverability concern.

Open to suggestions if the community feels strongly about a rename! Though at this stage, with GitHub issues, releases, and now HN discussion, there's some established presence.

nkmnz 1/11/2026||
Slightly off topic: is there any editor (and data format) that supports re-arranging mermaid charts? I often find myself wanting to slightly tweak the way the chart is rendered, e.g. moving around boxes so that some of them are clustered in a specific area etc.
OlaProis 1/11/2026|
Currently Mermaid doesn't support manual positioning — the layout is algorithmic (Sugiyama-style for flowcharts). Some workarounds: - Use subgraph blocks to cluster related nodes - Adjust edge order in source to influence layout - D2 (another diagram language) has better manual positioning

For v0.3.0's standalone crate, I'm considering whether to expose layout hints. What specific use case do you have — documentation, architecture diagrams?

nkmnz 1/12/2026||
Mostly clustering and sorting, but most importantly, I use diagrams not only as a tool for communication, but also as a tool to think visually. Moving boxes around would be a huge benefit for that use case, while I still want to have the diagram as code for version control etc pp
OlaProis 1/13/2026|||
Actually, this is going on the v0.3.0 roadmap. I've been looking for ways to make the standalone mermaid-rs crate genuinely better than just 'mermaid.js but Rust.'

The plan: use %% comments as layout hints. Something like:

%% @pos NodeA 100 200>

Mermaid.js ignores these, so the diagram stays portable. But Ferrite (and anyone using mermaid-rs) could parse them for manual positioning.

You'd be able to drag nodes around in Ferrite, have positions saved to the source, and still share with mermaid.js users (they'd get auto-layout).

If you want to follow progress or have input on the syntax, feel free to open an issue on the repo!

OlaProis 1/13/2026|||
Visual thinking use case makes sense!

The challenge is Mermaid is declarative — layout is computed, not specified. Some options I'm considering:

1. layout hints/constraints in the syntax,

2. export to SVG then use a proper editor like Excalidraw for repositioning. For now, influencing layout via subgraphs and edge ordering is the best workaround."

3. separate system for that, maybe to be included in the crate, would only work in Ferrite in the start

listic 1/11/2026||
Doesn't install on Ubuntu 22.04 LTS due to dependecy problems. Filed a bug: https://github.com/OlaProeis/Ferrite/issues/6
OlaProis 1/11/2026|
Thanks for reporting! This is a build environment issue - v0.2.1 was built on Ubuntu 24.04 which has newer glibc (2.39) and libssl3t64.

*Fix:* I've updated the CI to build on Ubuntu 22.04, which will make the .deb compatible with 22.04+.

This will be included in v0.2.2. For now, workarounds: 1. Use the `ferrite-linux-x64.tar.gz` (standalone binary) instead of .deb 2. Build from source: `cargo build --release`

Sorry for the inconvenience!

khimaros 1/11/2026||
seems like a promising alternative to obsidian, but missing [[wikilinks]] and back references
OlaProis 1/11/2026||
Not yet! [[wikilinks]] and backlinks are natural additions. I will add it to the Roadmap? Love community input on what Obsidian features matter most!
bthallplz 1/11/2026||
Yes! I was looking at it and hoping they had that feature already. I so want an Obsidian alternative to exist just in case.

Thanks for posting the GitHub issue!

pbronez 1/11/2026||
Is mermaid rendering implemented in Rust, or are you running mermaid.js in a JS interpreter somewhere?

On other systems I’ve run into challenges rendering markdown documents with many mermaid diagrams in them. It would be nice to have a more robust way to do this.

lkschubert8 1/11/2026||
Looks like it’s currently a subset of mermaid natively in rust https://github.com/OlaProeis/Ferrite/blob/master/src/markdow...
jasonjmcghee 1/11/2026|||
(not associated, just looked at the code - no js interpreter)

https://github.com/OlaProeis/Ferrite/blob/master/src/markdow...

OlaProis 1/11/2026||
100% pure Rust! No JS interpreter. Parses Mermaid syntax directly and renders via egui drawing primitives. Supports 11 diagram types: flowchart, sequence, state, class, ER, pie, mindmap, timeline, user journey, git graph, gantt. Much faster than spawning headless Chrome!
dhruv3006 1/11/2026||
Building an api client based on markdown as well - https://voiden.md
random3 1/11/2026|
And what's the connection with the thread?
endorphine 1/11/2026|
Hey OP, curious how much experience you have with Rust, given that this is the only rust repo I see in your profile.
OlaProis 1/11/2026|
This is my only public Rust repo — I have some ongoing private projects in Rust, so I'm familiar with the ecosystem (cargo, crates, the borrow checker experience, etc.).

That said, to be fully transparent: as I disclosed elsewhere in this thread, the Ferrite codebase is 100% AI-generated (Claude via Cursor). I direct the development, test, and iterate, but I haven't written the Rust by hand for this project.

So my Rust experience is more "ecosystem familiarity + reading AI-generated code" than "battle-hardened Rustacean." This project is partly a learning exercise — seeing how far AI-assisted development can go while picking up Rust patterns along the way.

More comments...