Markdown tree web server with live updates
Project description
yom
yom is a local web viewer for Markdown trees. It scans a directory, renders .md files, and serves them in a sidebar-based browser UI with live reload.
Features
- Recursively discovers Markdown files
- Shows a file tree in the sidebar
- Renders Markdown as HTML
- Resolves relative links and image paths inside Markdown
- Watches for file changes and updates the browser automatically
- Starts a local server with a single command
Installation
Install from PyPI:
pip install yom
If you use uv, you can also run it without a manual virtual environment step:
uv tool install yom
Quick Start
Serve the current directory:
yom .
Serve a specific directory:
yom /path/to/docs
By default, yom starts a local server on http://127.0.0.1:8000 and opens it in your browser.
Usage
yom /path/to/docs --host 127.0.0.1 --port 8000 --interval 0.7 --title "My docs"
Options available through yom --help:
root: directory to scan--host: bind host--port: bind port--interval: polling interval for change detection, in seconds--no-watch: disable file watching--watch-mode {auto,poll,watchdog}: choose the watch backend--title: browser window title--no-open: disable automatic browser launch on startup--markdown-extension NAME: enable an additional Markdown extension--no-default-extensions: disable the built-in Markdown extensions
Enable an extra Markdown extension:
yom /path/to/docs --markdown-extension admonition
--markdown-extension does not enable a yom-specific feature. It passes an additional
extension name through to the underlying Python-Markdown renderer. For example,
admonition enables admonition block syntax supported by Python-Markdown.
By default, yom enables fenced_code, tables, toc, and sane_lists. Use
--no-default-extensions if you want to start from an empty extension set and opt in
only to the extensions you need.
Run with the minimal Markdown configuration:
yom /path/to/docs --no-default-extensions
Relative Paths
- Markdown links such as
./other.mdand../guide.mdare converted into in-app navigation - Image paths such as
./image.pngare served as local assets - References that point outside the scanned directory tree are left unresolved
Watch Behavior
To disable file watching:
yom /path/to/docs --no-watch
To force the watchdog backend:
yom /path/to/docs --watch-mode watchdog
To disable automatic browser opening:
yom /path/to/docs --no-open
Development
For local development with the repository checked out:
uv sync --group dev
make test
make ci-check
The Japanese translation is available at README.ja.md.
Project details
Release history Release notifications | RSS feed
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 yom-0.1.0a0.tar.gz.
File metadata
- Download URL: yom-0.1.0a0.tar.gz
- Upload date:
- Size: 21.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b4c73c902740ed5f82a66fafced4b686c339d393ecbf05dd8433e3ccd15fa00b
|
|
| MD5 |
326a881be1a1eb8c8c0c439bf66933ff
|
|
| BLAKE2b-256 |
63913e94e7a08f014b5ee6de1225c7ae21f577d271d24f2df6111e6f7ab13265
|
File details
Details for the file yom-0.1.0a0-py3-none-any.whl.
File metadata
- Download URL: yom-0.1.0a0-py3-none-any.whl
- Upload date:
- Size: 19.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e109f313b95cbcb8d968620872c77f2aa4092c866a0ee0de119d8149277bb1cf
|
|
| MD5 |
e6d947346f4f3f413bba058bf5798761
|
|
| BLAKE2b-256 |
c96cbd7e79b5c46bb3afac0b244eb65f656d089716700d1667bd41f40d57eedd
|