mdview
A polished, full-screen terminal Markdown viewer
Install
curl -fsSL https://raw.githubusercontent.com/shawnmian/mdview/main/install.sh | shgit clone https://github.com/shawnmian/mdview && cd mdview && cargo install --path . │ ▐
~/Projects/my-app │ my-app ▐
│ ─────────────────────────────────────────────────────────── ▐
▌ README.md │ ▐
ARCHITECTURE.md │ A small service that turns Markdown into something you ▐
PLAN.md │ actually want to read in a terminal. See the design notes. ▐
TODO.md │ ▐
▾ docs/ │ Installation ▐
api.md │ ──────────────────────────── ▐
guide.md │ ▐
│ ▏ bash ▐
│ ▏ cargo install --path . ▐
│ ▏ ▐
│ ▐
│ Status ▐
│ ──────────────────────────── ▐
│ ▐
│ ☑ Renderer ▐
│ ▐
│ ☐ Themes ▐
│
│ ◦ solarized
│ ◦ gruvbox
│
‹ hide │ ▎ Everything here is generated by an agent and read by a
README.md 25/32 ↑↓ browse ↹ hide files q quit
mdview is built for one workflow in particular: you have a pile of Markdown
generated by tools like Claude Code — README.md, PLAN.md, ARCHITECTURE.md,
TODO.md — and you want a fast, distraction-free way to read and switch between
them without leaving the terminal.
It renders Markdown as a document, not as source code. Real headings, wrapped prose with comfortable margins, syntax-highlighted code blocks, tables, and task lists. A collapsible sidebar keeps every document one keystroke away, and open files reload themselves the moment they change on disk.
Other install options
The installer drops a binary at ~/.local/bin/mdview, verifies its SHA-256
checksum, and tells you what to add to your PATH if that directory isn’t on it
yet. To install somewhere else, or to pin a version:
curl -fsSL https://raw.githubusercontent.com/shawnmian/mdview/main/install.sh \
| MDVIEW_INSTALL_DIR=/usr/local/bin MDVIEW_VERSION=v0.1.0 sh
Prebuilt binaries cover Linux — x86_64 and aarch64, statically linked
against musl so they run on any distribution — and macOS on both Apple Silicon
and Intel.
How it is put together
The interesting constraint is that Markdown parsing knows nothing about the terminal, and the terminal code knows nothing about Markdown. Source becomes a width-independent block model; only later does a renderer turn that model plus a width into styled lines. Resizing the window re-runs the second half and never the first.