Show HN: Ferrite – Markdown editor in Rust with native Mermaid diagram rendering
155 points
8 hours ago
| 23 comments
| github.com
| HN
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!

random3
5 hours ago
[-]
This is cool. I was hoping to see progress coming from Zed (e.g. because Tree-sitter → https://github.com/tree-sitter-grammars/tree-sitter-markdown) but it's exciting to see this. I'm a heavy Obsidian user, and I love it, but I'd love to see real alternatives focused on foundations.

It would be interesting to know more about the end-goal if any.

Best of luck! I'll watch this.

reply
kirubakaran
3 hours ago
[-]
Since you're an Obsidian user, can I please get your feedback on https://hyperclast.com/ which I'm building?

(I'm not quite ready to do a Show HN yet, so please don't post it, but I'm ready for some early feedback if you'll indulge me)

reply
tomtom1337
1 hour ago
[-]
You need something "more" on the website before you ask people to create an account. "Team workspace that stays fast" isn’t clear enough for me, at least. What is a workspace? What does the interface look like? Is it in the browser? Is it an app?

People will go "what is this?", "huh, I’m not gonna make a user for this, can’t tell what it is". Those are my 2 cents.

reply
kirubakaran
1 hour ago
[-]
Thanks, I'll fix that.
reply
maxbond
56 minutes ago
[-]
Disclaimer: I'm not your target audience, I don't care about collaboration or performance.

- There's a heavy emphasis on performance. Are you sure customers care about that more than real time collaboration and self hosting? (I don't think they care about CRDTs.)

- If I am experiencing pain because eg my Notion wiki is too big and is having serious performance issues, what I want to hear immediately is how you are going to help me migrate from Notion to your solution. Notion has a feature to export an entire workspace; can you ingest that and get me spun up with your product?

- If I hear something is open source I expect to be able to try it out immediately without logging in. It looks like you can do that but when you hit "Get Started" it puts you into a registration flow.

- You might take a look at how Zed is marketing themselves, they have a similar pitch (performance + realtime collaboration). The first thing they try to show you is a video where they demo the product and show how fast it is. (I think they focus too much on performance though.)

- The frontend is a web app right? If possible rather than a video, embed the interface in your landing page. If possible, let them share their document and try out collaborating on it with someone or with another browser tab. Give them an opportunity to be impressed.

I respect anyone who posts their work. Best of luck.

reply
kirubakaran
28 minutes ago
[-]
Thank you!

> There's a heavy emphasis on performance. Are you sure customers care about that more than real time collaboration and self hosting?

- Good point, I'll find out

> Notion has a feature to export an entire workspace; can you ingest that and get me spun up with your product?

Yes, I'm almost done with this feature

> If I hear something is open source I expect to be able to try it out immediately without logging in. It looks like you can do that but when you hit "Get Started" it puts you into a registration flow.

I link to that elsewhere in the page: https://hyperclast.com/dev/ I'll look into making this more prominent.

> You might take a look at how Zed is marketing themselves

Thanks, will do

> embed the interface in your landing page

Great idea, I'll do that!

reply
OlaProis
52 minutes ago
[-]
Thanks! The end-goal is a fast, native Markdown editor that "just works" - no Electron, no web tech, instant startup. v0.3.0 will extract Mermaid as a standalone crate and build a custom text editor widget to unlock features egui's TextEdit blocks (proper multi-cursor, code folding). Long-term: potentially extract the editor as a headless Rust library since that's missing in the ecosystem. See ROADMAP.md for details
reply
echelon
5 hours ago
[-]
What is Obsidian written in? Electron?
reply
gregman1
4 hours ago
[-]
It’s closed source but yeah - electron all the way.
reply
atlintots
4 hours ago
[-]
Yes; it's also not open source.
reply
echelon
3 hours ago
[-]
I'm fine with that.

Open source purity is problematic. The OSI was established by the hyperscalers, who are decidedly not open source either.

Purely "OSI-approved open source" mandates having no non-commercial or non-compete clause, which means anyone can come in and bleed off profits and energy from the core contributors of open source projects. It prevents most forms of healthy companies from existing on top.

We shouldn't be allergic to making money with the software we write - life is finite and it's more sustainable over the long term to maintain software as a job.

The new "ethical source" / "fair source" licenses that have been popping up recently [1, 2] give customers 100% use of the code, but prevent competitors from coming in and stealing away the profits from running managed offerings, etc. (I wish Obsidian were this, but it's fully closed. Still, I do not admire them any less for this choice. We venerate plenty of closed creators - it's silly to hold software to a different standard.)

AWS profits hundreds of millions a quarter off of open source developed by companies thinking they were doing the right thing. AWS turned these into a proprietary managed solutions and gave nothing back to the authors. The original wind up withering and dying. AWS isn't giving back, they're just hoovering up.

Obsidian being closed means the core authors are hyper focused and can be compensated (even if it's not much). It's not like they can rug pull us - the files are text files, we can use old versions, and if they did piss us off I'm sure someone would write an open source version.

[1] https://fair.io/

[2] https://faircode.io/

reply
dvt
3 hours ago
[-]
Fully agree that pushing OSI is just posturing. After all, Amazon/Google/Facebook have made literal billions by commercializing open source software. I release stuff on MIT all the time (for things I'm okay with people poaching) but I'd argue the only "pure" OSS license is GPL, which comes with its own problems (and, as we all know, it infects everything it touches).

The problem with FSL is that it hasn't been tested in the courts yet (afaik), so it's a bit of a gamble to think it'll just "work" if some asshole does try to clone your repo and sell your work. Maybe it's a decent gamble for a funded startup with in-house counsel, but if you're just one guy, imo keep stuff you want to sell closed-source, it's not that big of a deal. We've been doing just that since the 70s.

reply
mgaunard
1 hour ago
[-]
The main issue is that Markdown remains a pretty primitive language to write documents in, with dozens of incompatible extensions all over the place.

I don't know if it's the best format to focus on.

reply
napoleongl
23 minutes ago
[-]
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.
reply
nico_h
28 minutes ago
[-]
It’s a cool name but there is already another project called ferrite, related to audio recording. https://www.wooji-juice.com/products/ferrite/
reply
msephton
4 hours ago
[-]
Will need a magnifying glass to see the text on the screenshots.

I find it makes sense to take screenshots in a window big enough to show what's going on, but no bigger. This means probably not full screen, or maximised, especially if you're running at a very high resolution. If there's a lot of dead/empty space in the window that's a signal it's too big. This way you guarantee the screenshots are readable without zooming in, on smaller displays than your own, for example mobile.

reply
k_bx
39 minutes ago
[-]
We need privacy-focused Obsidian alternative (which doesn't store unencrypted text files on disk), excited to see a potential player written in my tech stack, meaning it should be easy to extend!
reply
Bishonen88
2 hours ago
[-]
Looking at the Screenshots, this would've taken days/weeks e.g. 5 years ago. Now this seems to be vibe coded in 2 sessions. Crazy world we live in.
reply
_flux
2 hours ago
[-]
Seems like Mermaid parsing and layout would be a useful crate as by itself. I would enjoy a fast mermaid layout command line tool with svg/pdf/png support, which I think would be quite feasible to implement with such a crate.
reply
OlaProis
48 minutes ago
[-]
This is exactly the plan for v0.3.0! Extracting the ~7000 line Mermaid renderer into a standalone crate with SVG/PNG output and CLI support. Pure Rust, WASM-compatible. Stay tuned!
reply
bananaboy
33 minutes ago
[-]
That's great! I'm pretty interested in that. I hooked up `mark` [1] at work to upload md files to our internal confluence and would love to integrate a native tool to convert Mermaid diagrams to a png rather using mark's built-in system which calls out to mermaid.js and thus needs us to vendor chromium, which I'd rather avoid!

[1] https://github.com/kovetskiy/mark

reply
bananaboy
5 hours ago
[-]
Nice to see native markdown rendering rather than relying on spawning chromium and taking screenshots like some other libraries do!
reply
quintu5
1 hour ago
[-]
One major downside of native rendering is the lack of layout consistency if you’re editing natively and then sharing anywhere else where the diagram will be rendered by mermaid.js.
reply
bananaboy
32 minutes ago
[-]
Yes that's true. For my use-case I want to render the diagram out to a png though and embed it in a confluence page.
reply
OlaProis
46 minutes ago
[-]
Valid point! Native rendering won't be pixel-perfect with mermaid.js. The trade-off is speed and no JS runtime. For documents staying in Ferrite, it's great. For sharing, we're adding SVG export in v0.3.0 so you can use mermaid.js for final renders if needed.
reply
Arubis
7 hours ago
[-]
I happily paid money for Typora, which does roughly the same thing for just Markdown without support for JSON, Yaml (that I know of). This feels like a ripe space, especially with LLMs eagerly outputting reams of parseable text with embedded diagrams.
reply
OlaProis
48 minutes ago
[-]
Thanks! Typora is great - Ferrite aims for similar polish but with native Mermaid, structured data support (JSON/YAML/TOML tree viewer), and the pipeline feature for shell integration. And it's open source!
reply
gregman1
4 hours ago
[-]
The $15 price tag for Typora seems a bit steep considering the fundamental features it provides.
reply
swiftcoder
2 hours ago
[-]
The price of a fancy burger doesn't seem all that unreasonable for a piece of software one finds even moderately useful (of course, depending on your local exchange rate that may be more or less true)
reply
vunderba
5 hours ago
[-]
+1 happy user of Typora. I really like its ability to auto-create a related assets folder for embedded media as it’s dragged into a doc.
reply
huevosabio
7 hours ago
[-]
Nice to see an egui project that doesn't have super obvious egui aesthetics.

How did you find working with egui?

reply
OlaProis
46 minutes ago
[-]
egui is fantastic for rapid prototyping - immediate mode makes state management simple. Main limitation: TextEdit isn't designed for code editors (no multi-cursor, can't hide folded text). v0.3.0 will replace it with a custom widget. The default styling does scream "egui" - spent time on custom theming to avoid that
reply
koakuma-chan
6 hours ago
[-]
> How did you find working with egui?

Claude Code would have preferred React.

reply
echelon
5 hours ago
[-]
Native code and speed will be a differentiator.

If the value of JavaScript programming goes down, Rust programming will probably hold value a little bit longer.

reply
GrowingSideways
6 hours ago
[-]
How would this have worked outside of catering to browsers?
reply
steezeburger
6 hours ago
[-]
You can render React all over the place now!
reply
silcoon
4 hours ago
[-]
Why did you remove AI agent configurations and instructions from the repo? See .gitignore
reply
WD-42
3 hours ago
[-]
It's vibe coded. The entire project is only 10 commits, a few of them are giant with a bunch of markdown files full of emojis in the docs/ folder.
reply
OlaProis
43 minutes ago
[-]
Fair point - I should be more transparent. Yes, Claude assisted significantly with development. The .gitignore excludes AI config files because they where not needed in the project and aren't useful to others. I'll add a note to the README about AI-assisted development. The code is reviewed and understood, not blindly accepted.
reply
dcreater
3 hours ago
[-]
Good catch. For me its a red flag when the dev does not disclose AI usage
reply
listic
2 hours ago
[-]
Doesn't install on Ubuntu 22.04 LTS due to dependecy problems. Filed a bug: https://github.com/OlaProeis/Ferrite/issues/6
reply
OlaProis
22 minutes ago
[-]
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!

reply
WillAdams
6 hours ago
[-]
Made the fan in my Windows 11 laptop spin up.
reply
OlaProis
44 minutes ago
[-]
Which view/file caused this? v0.2.2 (coming soon) has significant performance optimizations for large files - deferred syntax highlighting, galley caching. If you can reproduce, please open an issue with details!
reply
nurettin
5 hours ago
[-]
This is why I prefer clunky hardware with heating cpus and a slow disk. You can easily feel that you wrote bad code from audio and tactile feedback.
reply
corysama
5 hours ago
[-]
I’ve heard of people doing ambient performance profiling by instrumenting their code to insert clicks into an audio buffer based on a high precision clock and piping it out a speaker. You get to learn the sound of your code at 44.1KHz
reply
vunderba
5 hours ago
[-]
This might be the most absurdly terrific thing I’ve read in a while - like a profiler equivalent of a Geiger counter.
reply
bschwindHN
2 hours ago
[-]
We did something like that for a hiring project once:

https://github.com/tonarino/acoustic_profiler

reply
sean_pedersen
4 hours ago
[-]
Like the idea but it spawns a terminal on startup on Mac and is not WYSIWYG (like Obsidian). Hope this project develops into usable state soon.
reply
OlaProis
45 minutes ago
[-]
Thanks for reporting! This is a packaging issue - need to create a proper .app bundle. On the roadmap for v0.3.0 (macOS signing & notarization). For now, running from terminal is the workaround.
reply
Levitating
7 hours ago
[-]
Made with egui, if anyones wondering.

I love the new era of graphical applications in Rust.

reply
dhruv3006
6 hours ago
[-]
Building an api client based on markdown as well - https://voiden.md
reply
random3
5 hours ago
[-]
And what's the connection with the thread?
reply
fuddle
5 hours ago
[-]
Whats the advantage of using Ferrite versus VS Code with a Mermaid extension?
reply
OlaProis
42 minutes ago
[-]
> - ~15MB vs ~300MB+ (no Electron) > - Instant startup vs seconds > - Native Mermaid rendering (no extension juggling) > - Built-in JSON/YAML tree viewer with pipeline shell integration > - Session restore, minimap, zen mode baked in > > If you live in VS Code already, an extension might be fine. Ferrite is for those wanting a focused, fast Markdown environment.
reply
littlestymaar
2 hours ago
[-]
The VSCode markdown viewer kind of sucks tbh.
reply
dcreater
3 hours ago
[-]
Rust + Native App I take it
reply
khimaros
7 hours ago
[-]
seems like a promising alternative to obsidian, but missing [[wikilinks]] and back references
reply
OlaProis
39 minutes ago
[-]
Not yet! [[wikilinks]] and backlinks are natural additions. I will add it to the Roadmap? Love community input on what Obsidian features matter most!
reply
bthallplz
5 hours ago
[-]
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!

reply
FloatArtifact
5 hours ago
[-]
Any interest in a plugin system similar to Obsidian?
reply
dmitrygr
6 hours ago
[-]
For those who, like me, read this and thought "what the hell is a mermaid diagram?", apparently it is a method to describe simple flow diagrams using markdown-like text. More here: https://mermaid.js.org/
reply
chaboud
2 hours ago
[-]
Next time you're vibe coding something, have the system generate a mermaid diagram to show its understanding. Though visual generation can be hard for models, structure/topology in formats like mermaid is pretty gettable.

I've even found sonnet and opus to be quite capable of generating json describing nodes and edges. I had them generate directed acyclic processing graphs for a GUI LLM data flow editor that I built (also with Claude - https://nodecul.es/ if curious)

reply
adamnemecek
6 hours ago
[-]
Consider adding support for Typst.
reply
OlaProis
38 minutes ago
[-]
Interesting idea! Typst is compelling (Rust-based too). Not on immediate roadmap but could be a future addition. TeX is heavier but possible via external tools + pipeline feature.
reply
GrowingSideways
6 hours ago
[-]
Or even better, TeX. I realize capital bought out even basic typesetting but let's not encourage this
reply
regenschutz
3 hours ago
[-]
Typst is open-source.
reply
GrowingSideways
3 hours ago
[-]
Open source doesn't mean relinquished from capital by any means. I also don't blame the author of typst. But TeX is truly free from capital, and that should mean far more than the aesthetics of a nicer interface.
reply
pbronez
7 hours ago
[-]
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.

reply
lkschubert8
7 hours ago
[-]
Looks like it’s currently a subset of mermaid natively in rust https://github.com/OlaProeis/Ferrite/blob/master/src/markdow...
reply
OlaProis
38 minutes ago
[-]
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!
reply
jasonjmcghee
7 hours ago
[-]
(not associated, just looked at the code - no js interpreter)

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

reply