Visual markdown workspace — hierarchy editor, prose analysis, live preview
Project description
PiTH
A visual markdown workspace for people who work with large collections of .md files.
If you've ever maintained a documentation site and found yourself hand-editing a YAML nav file, a sidebars.js, or a custom sidebar config every time you added, renamed, or reorganized a page — this tool is for you.
PiTH gives you a visual, drag-and-drop interface for organizing markdown files into a hierarchy. The hierarchy is stored as a simple tree.yaml alongside your files, and can be exported directly to MkDocs or Docusaurus config format when you're ready to build your site.
Features
Organize
- Visual hierarchy — drag and drop files to reorder and nest them; keyboard shortcuts for fine-grained control
- Unlinked file management — files not in the hierarchy surface automatically; rubber-band, shift-click, and ctrl-click multi-select; multi-drag to hierarchy
- Flatten / restore — flatten the tree to start fresh; restore the saved hierarchy if you change your mind
- Multiple projects — switch between doc sets without losing your place
Edit and analyze
- Built-in editor with live preview — split pane with syntax highlighting, rendered preview, and vi mode (
:w/:x) - Readability stats — word count, sentence length, and 5 readability scores per file
- Scan Project — project-wide analysis report with export to HTML/PDF
- Frontmatter templates — define expected keys per project, scan for compliance, batch-update files
- Internal link validation — project-wide broken link scan; per-file panel that re-checks on save
- Full-text search — search across all files with highlighted match context
- Mermaid diagrams — flowcharts, sequence diagrams, and more render live in the preview pane
Import and export
- Import markdowns from any directory — create a new project from an existing folder of
.mdfiles, or add individual files to a project - MkDocs and Docusaurus — import an existing nav config or export when ready to publish
- HTML/PDF export — whole-collection export to a single document with table of contents and print CSS
Local and private
- Runs entirely on your machine — no cloud, no accounts, no ongoing cost
- Projects stored in
~/.pith/projects/— separate from the app, never overwritten on upgrade - Available as a PyPI package or standalone executable
Install
Requires Python 3.10+.
pip install pith
pith
On Windows and Mac, pith opens a desktop window. On Linux, it starts a server and prints the URL. On WSL, it opens your Windows browser automatically.
Flags
| Flag | Effect |
|---|---|
--server |
Force headless mode on any platform — starts the server and opens a browser tab |
--port N |
Listen on port N instead of 5000 |
Linux / remote access
Start pith on the server first, then open the tunnel:
ssh user@host "nohup pith > ~/.pith/pith.log 2>&1 &"
ssh -L 5000:localhost:5000 user@host
Then open http://localhost:5000 in your local browser. If you use an SSH config alias (e.g. Host myserver), substitute that for user@host in both commands.
Standalone download
No Python required. Download the latest build from the Releases page.
| Platform | File |
|---|---|
| Windows | pith-Windows.zip |
| Mac | pith-macOS.zip |
| Linux | pith-Linux.zip |
Unzip and run the executable:
- Windows: Double-click
pith.exe - Mac: Right-click → Open the first time to bypass the unsigned app warning
- Linux: Run
./pithfrom a terminal
Documentation
Full documentation is available at rick-does.github.io/pith.
Run from source
Requires Python 3.12+ and Node.js LTS.
Windows:
git clone git@github.com:rick-does/pith.git
cd pith
start.bat
Mac / Linux / WSL:
git clone git@github.com:rick-does/pith.git
cd pith
./start.sh
Then open http://localhost:8002 in your browser.
Tech stack
- Backend: Python, FastAPI
- Frontend: React, Vite, TypeScript
- Editor: CodeMirror 6 (vi mode via @replit/codemirror-vim)
- Drag and drop: dnd-kit
- Readability: textstat
- Standalone: PyInstaller, pywebview
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pith_md-0.1.3.tar.gz.
File metadata
- Download URL: pith_md-0.1.3.tar.gz
- Upload date:
- Size: 1.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
70baaff2256253228c884c8053ed8418169ae8535dc0a90e2a11937d06a7169e
|
|
| MD5 |
597b1c9879482a7ad171fd4ca58182d8
|
|
| BLAKE2b-256 |
da60b5f8443baf800fb96037d7fa78bdd9ea8901605650b8542110bdb7d9989d
|
File details
Details for the file pith_md-0.1.3-py3-none-any.whl.
File metadata
- Download URL: pith_md-0.1.3-py3-none-any.whl
- Upload date:
- Size: 1.5 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9fc3eef5c853bb957bb1e4b706bd0929dc2157f598aec5e53875975f00c25a1d
|
|
| MD5 |
fc100fb1656890dcf2b79d2c13753cb3
|
|
| BLAKE2b-256 |
8d21efcb1b25815dcfb253318fe718396250d5e56309c5bfba26cd2b128ab3ec
|