A live viewer and editor for the Markdown plan files Claude Code generates. markrig gives you a two-pane layout — a file tree on the left, a rendered or editable view on the right — so you can navigate, read, and edit a project's .md files without digging through folders.
Built with Tauri v2 (Rust) + React + TypeScript, so it runs on macOS and Linux as a small native app.
- Import a project folder and browse its markdown files in a nested tree (only folders containing
.mdare shown;node_modules,.git,dist,targetare ignored). - Live folder watching — the tree updates as files appear/disappear, and the open file auto-reloads when it changes on disk.
- Rendered ↔ Source toggle — read GitHub-flavoured markdown (tables, task lists, code highlighting) or edit the raw source in a CodeMirror editor.
- Edit and save with
Cmd/Ctrl+S. A conflict banner appears if the file changed on disk while you had unsaved edits, letting you reload or keep your changes. - Recent folders remembered across sessions.
- Node.js 20+ and npm
- Rust (stable) — install via rustup
- Tauri v2 system dependencies — follow the Tauri prerequisites guide for your OS:
- macOS: Xcode Command Line Tools (
xcode-select --install) - Linux:
webkit2gtk,librsvg, and related packages (see the guide)
- macOS: Xcode Command Line Tools (
# 1. Clone
git clone https://github.com/RiggdAI/markrig.git
cd markrig
# 2. Install JS dependencies
npm install
# 3. Run the app in development (Vite dev server + Tauri window, hot-reload)
npm run tauri devThe first npm run tauri dev compiles the Rust backend, so it takes a minute; subsequent runs are fast.
- Import a folder — click Import Folder and pick a project directory. Its markdown files appear in the left tree.
- Open a file — click any
.mdfile. It renders in the right pane. - Toggle the view — use Rendered / Source in the header. Source mode is also the editor.
- Edit & save — type in Source mode, then press
Cmd/Ctrl+S(or the Save button). The header shows a dirty indicator (•) while you have unsaved changes. - Live updates — if Claude Code (or anything else) rewrites the open file, markrig reloads it automatically when you have no unsaved edits. If you do have unsaved edits, a banner offers Reload (take disk version) or Keep mine.
- Recents — previously imported folders appear in the sidebar for one-click reopening.
| Command | What it does |
|---|---|
npm run tauri dev |
Run the full app (frontend + Rust) with hot-reload |
npm run dev |
Run only the Vite frontend in a browser (no Tauri APIs) |
npm run build |
Type-check (tsc) and build the frontend bundle |
npm run tauri build |
Build a production app bundle + installer (see below) |
npm test |
Run the frontend test suite (Vitest) |
npm run test:watch |
Run frontend tests in watch mode |
Rust tests live in src-tauri:
cd src-tauri && cargo testnpm run tauri buildProduces a native bundle under src-tauri/target/release/bundle/ — a .app and .dmg on macOS, an AppImage / .deb on Linux. macOS .dmg packaging requires a full macOS environment (and signing for distribution).
A Homebrew cask skeleton lives at Casks/markrig.rb. It is not yet installable — the cask url and sha256 must be finalized once the first release is published at https://github.com/RiggdAI/markrig/releases.
Once released:
brew install --cask markrigmarkrig/
├── src/ # React + TypeScript frontend
│ ├── components/ # FolderTree, RenderedPane, EditorPane
│ ├── store/ # Zustand document store (open file, dirty/conflict state)
│ ├── tauri.ts # Typed wrappers around Tauri commands/events
│ └── App.tsx # Two-pane app shell
├── src-tauri/ # Rust backend
│ └── src/ # files, tree (scan), watcher, command wiring
└── Casks/markrig.rb # Homebrew cask (skeleton)
MIT