Skip to main content

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.md and ../guide.md are converted into in-app navigation
  • Image paths such as ./image.png are 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yom-0.1.0a0.tar.gz (21.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

yom-0.1.0a0-py3-none-any.whl (19.1 kB view details)

Uploaded Python 3

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

Hashes for yom-0.1.0a0.tar.gz
Algorithm Hash digest
SHA256 b4c73c902740ed5f82a66fafced4b686c339d393ecbf05dd8433e3ccd15fa00b
MD5 326a881be1a1eb8c8c0c439bf66933ff
BLAKE2b-256 63913e94e7a08f014b5ee6de1225c7ae21f577d271d24f2df6111e6f7ab13265

See more details on using hashes here.

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

Hashes for yom-0.1.0a0-py3-none-any.whl
Algorithm Hash digest
SHA256 e109f313b95cbcb8d968620872c77f2aa4092c866a0ee0de119d8149277bb1cf
MD5 e6d947346f4f3f413bba058bf5798761
BLAKE2b-256 c96cbd7e79b5c46bb3afac0b244eb65f656d089716700d1667bd41f40d57eedd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page