If you use AI tools like Claude, ChatGPT, or Copilot regularly, you probably have a growing pile of Markdown files — design docs, API specs, architecture notes, explanations, meeting summaries. I do too.
And reading them has always been a pain.
The problem
VS Code's Markdown preview splits your workspace in half. Browser-based renderers don't watch files. And most Markdown apps are built for writing — they ship with editors, toolbars, file managers, and cloud sync I didn't need.
I didn't want to edit Markdown. I just wanted to read it.
Point at a file. See it beautifully rendered. Have it update live when the file changes. That's it.
Nothing I found did just that, so I built it.
What I built
MEVA is a small native desktop app focused entirely on reading Markdown. Here's what it does:
-
Watches files in real time — when an AI tool streams output to a
.mdfile, you see the rendered result building live - Renders LaTeX, Mermaid diagrams, and syntax-highlighted code blocks natively
- Works fully offline — no accounts, no cloud sync, no tracking
- Under 15MB — because a Markdown viewer shouldn't be a 200MB Electron app
The tech journey
I started with Electron. It worked, but the bundle was 150MB+ for what is essentially a file viewer. That felt wrong.
I switched to Tauri (Rust + native WebView), which got the app under 15MB while keeping it cross-platform on Mac, Windows, and Linux. Tauri gives you a native app shell without bundling an entire Chromium browser — which is exactly what a lightweight tool like this needs.
For rendering, I use:
- markdown-it as the core parser
- KaTeX for LaTeX math rendering
- Mermaid for diagram rendering
- Shiki for syntax-highlighted code blocks
The trickiest part was live file watching. I needed it to feel instant without hammering the filesystem. I ended up using debounced native file system events through Rust's notify crate, piped to the frontend via Tauri's event system. It picks up changes within milliseconds.
Getting Mermaid to re-render cleanly on live file changes without flickering was another challenge. I had to diff the diagram source and only re-render blocks that actually changed — otherwise you'd see a flash every time the file updated.
How I actually use it
My daily workflow looks like this:
- I ask Claude or ChatGPT to generate a design doc, analysis, or explanation
- Save the output as a
.mdfile (or the tool writes directly to disk) - MEVA picks it up instantly and renders it
The real magic is with tools like Claude Code that stream output directly to files. I have MEVA open in a separate window and watch the rendered document build in real time as the AI writes. It's a much better reading experience than watching raw Markdown scroll by in a terminal.
It's become my default way to read any Markdown file — AI-generated or otherwise.
What I learned building this
A few takeaways from the process:
Tauri is impressive for small tools. If you're building something that doesn't need a full browser engine, the size difference vs Electron is dramatic (15MB vs 150MB+). The Rust layer is fast and the IPC between Rust and the WebView is clean.
"Do one thing well" still works. Every Markdown app I tried wanted to be an editor. By only solving the reading problem, I could make the UX much simpler — no sidebar, no file tree, no toolbar. Just the rendered document.
File watching is deceptively hard to get right. Between debouncing, platform differences, and avoiding unnecessary re-renders, it took more iteration than I expected to make it feel seamless.
Try it out
MEVA is available for Mac, Windows, and Linux: https://usemeva.com/#download
There's a free version with all core features, and an optional paid version that adds multiple tabs, themes, and a few extras to support continued development.
I'd genuinely love feedback — especially on:
- What feels unnecessary or bloated?
- What's missing that you'd want in a Markdown reader?
- How does it fit (or not fit) into your workflow?
If you work with AI-generated Markdown regularly, give it a try and let me know what you think.
Top comments (0)