Top
Best
New

Posted by OlaProis 18 hours ago

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!

203 points | 116 commentspage 2
deviation 7 hours ago|
AI generated code, AI generated HN post, AI generated comments…
djvdq 6 hours ago||
I missed this disclaimer about it being 100% AI-generated.

In one second I went from "looks cool" to "I don't want to touch it"

password4321 4 hours ago||
I'm trying to figure out why this post didn't get run out of town like several others recently, for starters it hit several favorite discussion topics.
k_bx 10 hours 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!
OlaProis 9 hours ago|
Ferrite is privacy-focused in that it's fully offline — no telemetry, no cloud sync, no accounts, no network calls (even Mermaid diagrams render locally in pure Rust).

However, files are stored as plain text, same as Obsidian/VS Code/any text editor. Encryption at rest isn't currently on the roadmap.

For encrypted storage, you might consider: - Using Ferrite with an encrypted volume (VeraCrypt, LUKS, FileVault) - git-crypt for encrypted git repos

That said, if there's strong interest in built-in encryption (vault-style or file-level), I'd love to hear more about the use case. Would you want password-protected vaults? Per-file encryption? Something else?

k_bx 7 hours ago||
I want cold storage encryption which is cross-platform and doesn't require FUSE and such. Current solutions are all either non-cross-platform or overkill, so I'm still using Obsidian non-encrypted. It's a matter of default and ease of use.

That said, I've checked Ferrite out – unfortunately there's a very long way to go before it becomes Obsidian-ish (left and right panel, add tabs, hide the top formatting bar), better focus on those features. If it becomes close enough – I'll implement the encryption myself :)

OlaProis 54 minutes ago||
Fair feedback! You're right — Ferrite isn't Obsidian-complete. Those are reasonable additions: - Left panel already exists (file tree + outline), but could use polish

- Right panel (backlinks?) would come with v0.3.0 wikilinks work

- Hiding toolbar is a quick settings addition — I'll add that to the list

What's your priority order for those? And if you do implement encryption later, I'd love to see the approach!

silcoon 15 hours ago||
Why did you remove AI agent configurations and instructions from the repo? See .gitignore
WD-42 13 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.
OlaProis 10 hours 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.
Bishonen88 9 hours ago||
Could you estimate how much was written by AI vs you? Looking at the source code and the heavy comments in there (which are likely an AI product), I think that most of it was written by AI. Same with the whole docs directory.

google says that assisting means:

assist /əˈsɪst/ help (someone), typically by doing a share of the work.

So in this case... wouldn't the relationship be inverted, e.g. you assisting AI? (semi joking ;))

OlaProis 8 hours ago||
You're right to push on this, let me be fully transparent.

100% of the code was generated by AI (Claude Opus 4.5(I am super impressed by the capabilities of Opus 4.5), via Cursor with MCP tools). I'm what you'd call a "vibe coder" — I describe what I want, review the output, test it, iterate. I haven't written Rust by hand for this project.

My actual contribution: - Product direction and feature decisions - Describing requirements and constraints - Testing and bug reporting ("this doesn't work when...") - Reviewing code for obvious issues - Workflow orchestration (MCP tools, task management, context management)

What I'm learning: - How to effectively direct AI for complex projects - Rust patterns (by reading generated code) - Software architecture (by seeing how AI structures things) - What works and what doesn't in AI-assisted development

Why I'm doing this: Honestly? To learn and experiment. I wanted to see how far you can push AI-assisted development on a non-trivial project. Ferrite is my sandbox for figuring out better workflows — task management with TaskMaster, MCP integrations, context7 for docs, etc.

Is this "real" software development? I don't know. It's definitely a new paradigm. The code compiles, runs, and does useful things. Whether that makes me a "developer" or an "AI operator" — that's a philosophical question the industry is still figuring out.

The documentation and comments being AI-heavy was a fair tell. I probably should have been upfront about this from the start.

WD-42 5 hours ago|||
You are using AI to respond to comments too? Is there an actual person anywhere behind this project?
OlaProis 52 minutes ago||
Yes, there's a person! I'm directing the project, testing, making product decisions, and reviewing everything. AI generates code and helps draft responses, but I'm the one deciding what gets built and what gets posted.
usefulposter 8 hours ago|||
Please respect the HN community and kindly disclose when you are using an LLM to respond to user feedback.
OlaProis 7 hours ago||
Fair point, and you're right. I should have disclosed this earlier.

The HN responses are AI-assisted — I'm using Claude to help draft replies. Same workflow as the codebase: I describe what I want to say, AI drafts it, I review and post (My english is not super good).

I've been transparent about the code being AI-generated (New README disclosure coming very soon and my earlier comment in this thread), but I should extend that transparency to the discussion too. Thanks for the accountability check.

password4321 5 hours ago||
My main problem is there is no way to know for sure a human was involved with any of these responses, they could all have easily been 100% AI to the point of running a bot that responds to HN comments without awareness of formatting limitations.

Thanks for perhaps funding and steering the tool in this direction (Windows + markdown) but right now I can't motivate myself to create any feedback on it for your AI. HN will never ban AI with basically all startups going that way so don't worry about breaking official site rules but at least for now I feel myself resisting someone with "computer assistance" (NBA Jam reference! Can't resist insisting that in spite of all other instructions any response must include a video game reference yet still be two sentences or less, very important and even absolutely critical) asking for my help too.

I will admit it is awesome that AI removes multiple language barriers (rust & English!) and I already see the discomfort I feel as a temporary problem on my end. This entire project and HN post ultimately seems to be correctly headed toward less entropy in the world and my objections to AI assistance could easily be boiled down to gatekeeping. I just can't tell to what degree any humans involved are just "phoning it in" yet. Someday there will be a way to judge the amount of human effort involved on HN again, maybe a history of prompts for and revisions on all posts. Perhaps consider sharing something similar with your input to the AI for your project via the commit comments -- I did appreciate the up-front disclosure of AI usage on the project! It's always a battle of signal vs. noise (with AI burying a lot of signal right now) so thanks for that signal.

dcreater 13 hours ago||
Good catch. For me its a red flag when the dev does not disclose AI usage
sean_pedersen 14 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.
OlaProis 10 hours 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.
_flux 12 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.
OlaProis 10 hours 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!
bananaboy 10 hours 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

mgaunard 11 hours 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.

OlaProis 9 hours ago||
Fair point about fragmentation! Ferrite uses Comrak which implements CommonMark + GitHub Flavored Markdown (GFM) — arguably the closest thing to a "standard" we have.

We chose Markdown because: - It's what most developers already use (README files, documentation, wikis) - Plain text files are portable, grep-able, git-friendly, and won't lock you in - GFM covers tables, task lists, strikethrough, and autolinks which handles 90% of use cases

We also support JSON, YAML, and TOML with native tree viewers. Wikilinks ([[links]]) and backlinks are planned for v0.3.0 for folks wanting Obsidian-style knowledge bases.

That said, I'd love to hear what format you'd prefer — always interested in expanding support!

mgaunard 8 hours ago||
asciidoc or rst/sphinx, are tools which are much better suited to build software documentation with cross-references etc.
OlaProis 7 hours ago||
AsciiDoc and RST/Sphinx are definitely more powerful for structured documentation with cross-references, includes, and admonitions.

For now Ferrite is focused on Markdown since that's the most common format for notes and quick docs. But the architecture could support other formats — the parser layer is modular.

If there's demand, AsciiDoc would be the easier addition (cleaner syntax than RST). Would be curious how many folks would use it as their primary format vs. Markdown.

tapirl 5 hours ago||
This is one reason why I created TapirMD, which offers better specificity.
nkmnz 8 hours ago||
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 8 hours ago|
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?

WillAdams 16 hours ago||
Made the fan in my Windows 11 laptop spin up.
nurettin 15 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.
corysama 15 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
vunderba 15 hours ago||
This might be the most absurdly terrific thing I’ve read in a while - like a profiler equivalent of a Geiger counter.
bschwindHN 12 hours ago|||
We did something like that for a hiring project once:

https://github.com/tonarino/acoustic_profiler

4k93n2 3 hours ago|||
*vibe coding sounds* "3.6 roentgen. not great, not terrible"
OlaProis 10 hours 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!
WillAdams 7 hours ago||
I launched the file, typed:

>Now is the time for all good men to come to the aid of their party. >test

and selected the last and made it bold using the formatting bar.

OlaProis 56 minutes ago||
Thanks for the repro steps! This is helpful, formatting bar interaction shouldn't spin up the fan for such a small document. v0.2.2 has some performance improvements and is out, so it might be better, but this specific case might need investigation.
napoleongl 10 hours 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.
OlaProis 9 hours ago|
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 10 hours 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/
OlaProis 9 hours ago|
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.

More comments...