Marky tackles the common developer pain point of needing a fast, lightweight markdown previewer that fits naturally into CLI-driven workflows. It manages to pack a rich rendering pipeline and workspace features into a native desktop app under 15MB, rivaling Electron alternatives but with a far smaller footprint.
what marky does and how it’s built
Marky is a desktop markdown viewer targeting macOS and Linux users who prefer a CLI-first approach to editing and previewing markdown files. It’s built on Tauri v2, which provides a native shell around a web frontend, combining Rust for system-level operations and React with TypeScript for the UI.
At its core, Marky watches markdown files using Rust’s notify crate, enabling live reload when files change. It supports folder-based workspaces inspired by Obsidian, with persistent sessions that remember your open files and state.
The rendering pipeline is notable for its composition of multiple specialized libraries: markdown-it handles GitHub-Flavored Markdown parsing, Shiki provides VS Code-themed syntax highlighting for code blocks, KaTeX renders LaTeX math formulas, and Mermaid generates SVG diagrams from textual descriptions. All rendered content is sanitized with DOMPurify to prevent injection issues.
This architecture leverages Rust’s strengths for file I/O and event watching, while React manages the frontend UI, including an interactive fuzzy-search command palette powered by the Rust nucleo crate. The app aims to be a lightweight alternative to heavier Electron-based markdown viewers, delivering a responsive and integrated user experience.
technical strengths and design tradeoffs
Marky’s standout technical strength is its clean separation of concerns between the Rust backend and React frontend within the Tauri framework. Using Rust for system-level tasks like file watching and CLI handling takes advantage of Rust’s performance and safety guarantees, while React enables a flexible, dynamic UI.
The choice of Tauri over Electron is significant. Electron apps tend to be bulky due to bundling entire Chromium engines, often pushing app sizes well over 100MB. Marky’s production .dmg is under 15MB, which is remarkable given the feature set. This smaller footprint benefits users who want a lean tool without sacrificing functionality.
The rendering pipeline is sophisticated and modular. markdown-it ensures compatibility with GFM syntax, which covers most common markdown extensions. Shiki’s syntax highlighting mimics VS Code themes, improving code block readability. KaTeX support is essential for users working with math-heavy documents. Mermaid integration enables diagram rendering directly from markdown, useful for technical documentation.
Sanitizing the HTML output with DOMPurify is a necessary security measure, especially when loading arbitrary markdown files that might contain unsafe content. This shows attention to detail in the security model.
The CLI-first design and folder workspace persistence cater to power users who work primarily from the terminal. The fuzzy-search command palette, backed by the efficient nucleo crate, enhances navigation speed within the app.
However, there are tradeoffs. The app currently targets only macOS and Linux, leaving Windows users out. The reliance on Tauri and web technologies means some startup overhead compared to pure native apps, though still much less than Electron.
Also, while the app supports live reload and workspace persistence, it’s not a full markdown editor but a viewer, so editing workflows still depend on external editors. The upcoming features like AI chat and git diff review sound promising but are not yet available.
quick start
Homebrew (macOS)
NOTE: I am currently waiting for apple developer review so for the time being the app is not signed. This will be fixed soon.
brew tap GRVYDEV/tap
brew install --cask GRVYDEV/tap/marky
These commands install Marky via Homebrew on macOS. Linux users will need to check the repository for alternative installation options or build from source.
verdict
Marky is a well-executed markdown viewer that blends Rust and React inside Tauri to create a surprisingly lightweight desktop app for markdown previewing. It’s particularly relevant for developers who want fast previews from the terminal with live reload, syntax highlighting, math, and diagrams — all without the bulk of Electron.
Its CLI-first design and folder workspace persistence make it a solid choice for those with Obsidian-style markdown workflows needing a native viewer.
The tradeoffs include platform support limited to macOS and Linux, and the focus on viewing rather than editing. Also, users should be aware the app is still evolving, with AI and git diff features on the horizon.
Overall, Marky is worth checking out if you want a low-footprint, native-feeling markdown previewer tightly integrated with CLI workflows.
Related Articles
- leaf: a Rust terminal Markdown previewer with GUI-like interactivity — leaf is a Rust-based terminal Markdown previewer offering live reload, LaTeX support, fuzzy file picking, and mouse inte
- tauri-terminal: combining Rust PTY access with xterm.js in a Tauri desktop terminal — tauri-terminal bridges Rust’s native PTY access with xterm.js terminal rendering inside Tauri, offering a minimal cross-
- NeoHtop: a lightweight cross-platform system monitor built with Tauri, Rust, and SvelteKit — NeoHtop is a cross-platform system monitor combining a Rust backend with a SvelteKit UI via Tauri, offering efficient de
- Tolaria: a Tauri desktop app for managing markdown knowledge bases with AI agent integration — Tolaria is a Tauri desktop app for managing markdown knowledge bases with git versioning and AI agent integration via a
- nh: a Rust-based unified CLI for the Nix ecosystem with enhanced search and ergonomics — nh is a Rust CLI tool consolidating Nix, NixOS, and Home Manager commands with improved ergonomics, speed, and Elasticse
→ GitHub Repo: GRVYDEV/marky ⭐ 256 · TypeScript