A beautiful real-time markdown file watcher with live TUI dashboard
Watch your Claude projects, sync markdown files, and browse them in style.
All from a single command with a gorgeous terminal interface.
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π MD SYNC β’ Markdown File Watcher β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββ Configuration βββββββββββββββ ββ Activity ββββββββββββββββββββββββββββββββββββ
β Watch C:\Projects\MyProjectβ β 14:32:15 β modified docs/README.md β
β Mirror C:\Projects\MD\md β β 14:32:15 β index 142 files β
β Index files.json β β 14:31:02 β created notes/todo.md β
β Server http://localhost:7777β β 14:30:45 β sync docs/api.md β
ββ Statistics ββββββββββββββββββ€ β 14:30:44 β deleted old/deprecated.md β
β Files in Index 142 β β 14:30:43 β moved drafts/idea.md β
β Files Synced 87 β β β
β Events 23 β β β
β Uptime 00:05:32 β β β
ββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β Watching for changes... β’ Last: 3s ago β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- π₯οΈ Live TUI Dashboard β Beautiful real-time terminal interface powered by Rich
- π Smart File Sync β Watches your project and mirrors
.mdfiles with intelligent debouncing - π Embedded Web Server β Browse your markdown files in the browser, no extra process needed
- β‘ Concurrent-Safe β Handles file locks gracefully when other tools are editing
- π¨ Color-Coded Events β Instantly see creates, modifies, deletes, and moves
- π Real-Time Stats β Track synced files, events, uptime, and errors
- π Zero Config β Just point it at your project and go
- Python 3.13+
- uv (recommended) or pip
git clone https://github.com/yourusername/claude-library.git
cd claude-library
uv sync# Watch a project and start the web server
uv run watch.py /path/to/your/claude-project
# Open in browser
open http://localhost:7777That's it! The dashboard will show you everything in real-time.
| Option | Short | Default | Description |
|---|---|---|---|
watch_dir |
β | . |
Directory to watch for .md files |
--mirror-to |
β | ./md |
Local directory to sync files into |
--out |
-o |
files.json |
Output index file |
--port |
-p |
7777 |
HTTP server port |
--max-depth |
β | unlimited | Limit directory recursion depth |
--prune |
β | off | Remove stale files from mirror |
--no-tui |
β | off | Simple logging instead of TUI |
--no-server |
β | off | Disable embedded HTTP server |
# Basic usage - watch project, sync to ./md, serve on :7777
uv run watch.py ../MyProject
# Custom port and limited depth (useful for large projects)
uv run watch.py ../MyProject --port 8080 --max-depth 3
# Sync only, no web server
uv run watch.py ../MyProject --no-server
# Clean mode - remove files that no longer exist in source
uv run watch.py ../MyProject --prune
# Headless mode for CI/scripts
uv run watch.py ../MyProject --no-tuiThe dashboard shows different event types with distinct icons:
| Icon | Event | Description |
|---|---|---|
| β | created |
New file added |
| β | modified |
File content changed |
| β | deleted |
File removed |
| β | moved |
File renamed/moved |
| β | sync |
Initial sync copy |
| β | index |
Index regenerated |
| β | prune |
Stale file removed |
| β | skip |
File locked, will retry |
βββββββββββββββββββ ββββββββββββββββ βββββββββββββββββββ
β Source Project ββββββΆβ Watcher ββββββΆβ Mirror (./md) β
β (your files) β β (watchdog) β β (local copy) β
βββββββββββββββββββ ββββββββββββββββ βββββββββββββββββββ
β
βΌ
ββββββββββββββββ
β files.json β
β (index) β
ββββββββββββββββ
β
βΌ
ββββββββββββββββ βββββββββββββββββββ
β Web Server ββββββΆβ Browser β
β (:7777) β β (index.html) β
ββββββββββββββββ βββββββββββββββββββ
# Install dev dependencies
uv sync
# Run linting
uv run ruff check watch.py
# Run type checking
uv run pyright watch.py
# Run security scan
uv run bandit watch.py
# Format code
uv run ruff format watch.pyMIT License - do whatever you want with it.
Made with β and π€ by humans and Claude