Wenlan
Wenlan is a source-backed AI knowledge base and LLM wiki for AI work: organize documents and decisions into pages you can find, inspect, and review.
Write and edit Markdown, share view or edit links, and keep every version. Work with your team in the browser, CLI, API, and MCP.
ProductivityTypeScript · CSSGitHub @profullstackOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
A terminal markdown reader: file browser on the left, rendered markdown on the right. Bun and Node, built on HQTUI.
Loading the full README.
Read the full README ↗Markdown editing and sharing for people and teams, with a terminal reader and editor. File browser on the left, the rendered
document on the right, and nothing else in the way. Press e to edit the file
you are looking at, esc to see it rendered again.
CommonMark and GitHub Flavored Markdown, plus the extras each dialect added on
top: GitHub alerts, footnotes and :emoji:, and Reddit spoilers, superscript
and r/ u/ links.
Built on HQTUI — truecolor, mouse, and a terminal that gets restored no matter how the process dies.
╭─ readm3 ──────────── 6 ─╮╭─ README.md ────────────────────────────────────── 24% ─╮
│ ▾ docs ││ readm3 │
│ usage.md ││ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │
│ README.md ││ │
│ CHANGELOG.md ││ A terminal markdown reader. File browser on the left, the │
│ ││ rendered document on the right. │
│ ││ │
│ ││ Install │
│ ││ ───────── │
│ ││ │
│ ││ ┌─ bash ──────────────────────────────────────────────── │
│ ││ │ bun add -g @profullstack/readm3 │
│ ││ └──────────────────────────────────────────────────────── │
╰───────────────────────────╯╰──────────────────────────────────────────────────────────╯
↑↓ move ↵ open ←→ fold / find tab reader ? keys q quit docs dark
One line. It installs under ~/.local and never asks for sudo; with no Node 22+
on the machine it fetches a private official Node first:
curl -fsSL https://readm3.com/install.sh | sh
Update with readm3 update and remove with readm3 uninstall; both work the way readm3
was installed (this installer, npm, bun, pnpm or yarn), through
@profullstack/cli.
Add --desktop to install the desktop editor as well (Linux x64; macOS and Windows
download it, see
Desktop app):
curl -fsSL https://readm3.com/install.sh | sh -s -- --desktop
Or with a package manager:
bun add -g @profullstack/readm3 # Bun is the default runtime
npm install -g @profullstack/readm3 # Node 22.6+ works too
Or run it without installing:
bunx @profullstack/readm3
npx @profullstack/readm3
readm3 # browse markdown under the current directory
readm3 ./docs # browse a directory
readm3 CHANGELOG.md # open a file, browse its directory
readm3 sales.csv # a CSV or TSV opens as a sortable, filterable grid
readm3 --theme nord # pick a palette
--print renders straight to stdout and exits, so it works in a pipe and as a
cat for markdown:
readm3 --print CHANGELOG.md # rendered, colored, to the terminal
readm3 --print README.md | less -R # into a pager
curl -s https://example.com/x.md | readm3 --print
readm3 --print notes.md | grep TODO # no escapes when stdout is a pipe
readm3 --print data.csv # a CSV or TSV prints as an aligned table
Color follows the usual rules: on when stdout is a terminal, off when it is not,
and NO_COLOR / FORCE_COLOR are honored. --color always|never|auto overrides
that either way. With --print, --width sets the render width rather than the
sidebar.
The browser shows markdown and tables (.csv, .tsv, .tab, .psv). Directories with nothing beneath them are
pruned, node_modules and friends are never walked, and README sorts first.
↑ ↓ j k | move or scroll | tab | switch pane |
→ ← l h | expand or collapse | / | filter files |
enter | open the file | esc | clear the filter |
space b | page down / up | r | rescan and reload |
g G | top / bottom | [ ] | sidebar width |
e i | edit this file | s | reveal spoilers |
ctrl+s | save | ? | help |
q ctrl+c | quit |
The mouse works too: the wheel scrolls whichever pane it is over, and a click opens a file.
A CSV or TSV opens as a grid instead of as text, in the spirit of tabiew: a frozen header, row numbers, a cell cursor, and columns that scroll in from the side. The delimiter (comma, tab, semicolon, pipe) and the header row are detected, quoted fields with commas and line breaks are read correctly, and every column is typed (number, date, yes/no, text) so sorting and comparisons read values the way people do.
← ↑ ↓ → h j k l | move the cell cursor (← on the first column returns to the files) |
0 $ | first / last column |
o | sort by the cursor's column: ascending, descending, off |
/ | filter the rows |
enter | the row as a sheet, every column on its own line |
c | the column's statistics: rows, empty, distinct, min, max, sum, mean, median, top values |
v | the raw text instead of the grid |
e | edit the text, as with any file |
The filter takes space-separated terms that must all match: london (any cell),
city:london (that column contains it), status=open, country!=US, age>30,
price<=9.99, joined>=2024-01-01, #3>10 (the third column), and !draft to
negate. Quote a value with spaces: city:"new york".
This is the beginning of the README. Read the rest at the original. Read the full README ↗