Skip to content

ikawaha/mo

 
 

Repository files navigation




mo


mo

build Coverage Code to Test Ratio Test Execution Time

mo is a Markdown viewer that opens .md files in a browser.

Features

  • GitHub-flavored Markdown (tables, task lists, footnotes, etc.)
  • Syntax highlighting (Shiki)
  • Mermaid diagram rendering
  • dark theme Dark / light theme light theme
  • group File grouping
  • toc Table of contents panel
  • flat view Flat / tree view tree sidebar view with drag-and-drop reorder
  • YAML frontmatter display (collapsible metadata block)
  • MDX file support (renders as Markdown, strips import/export, escapes JSX tags)
  • raw Raw markdown view
  • copy Copy content (Markdown / Text / HTML)
  • restart Server restart with session preservation
  • Live-reload on save

Install

homebrew tap:

$ brew install k1LoW/tap/mo

manually:

Download binary from releases page

Usage

$ mo README.md                          # Open a single file
$ mo README.md CHANGELOG.md docs/*.md   # Open multiple files
$ mo spec.md --target design            # Open in a named group

mo opens Markdown files in a browser with live-reload. When you save a file, the browser automatically reflects the changes.

Single server, multiple files

By default, mo runs a single server on port 6275. If a server is already running on the same port, subsequent mo invocations add files to the existing session instead of starting a new one.

$ mo README.md          # Starts a mo server in the background
$ mo CHANGELOG.md       # Adds the file to the running mo server

To run a completely separate session, use a different port:

$ mo draft.md -p 6276

Multiple files with sidebar

Groups

Files can be organized into named groups using the --target (-t) flag. Each group gets its own URL path and sidebar.

$ mo spec.md --target design      # Opens at http://localhost:6275/design
$ mo api.md --target design       # Adds to the "design" group
$ mo notes.md --target notes      # Opens at http://localhost:6275/notes

Group view

Glob pattern watching

Use --watch (-w) to specify glob patterns. Matching files are opened automatically, and watched directories are monitored for new files.

$ mo --watch '**/*.md'                          # Watch and open all .md files recursively
$ mo --watch 'docs/**/*.md' --target docs       # Watch docs/ tree in "docs" group
$ mo --watch '*.md' --watch 'docs/**/*.md'      # Multiple patterns

--watch cannot be combined with file arguments. The ** pattern matches directories recursively.

Removing watch patterns

Use --unwatch to stop watching a previously registered pattern. Files already added remain in the sidebar.

$ mo --unwatch '**/*.md'                              # Stop watching a pattern (default group)
$ mo --unwatch 'docs/**/*.md' --target docs            # Stop watching in a specific group
$ mo --unwatch '/Users/you/project/**/*.md'            # Stop watching by absolute path

Patterns are resolved to absolute paths before matching, so you can specify either a relative glob or the full path shown by --status.

Sidebar view modes

The sidebar supports flat and tree view modes. Flat view shows file names only, while tree view displays the directory hierarchy.

Flat Tree
Flat view Tree view

Starting and stopping

mo runs in the background by default — the command returns immediately, leaving the shell free for other work. This makes it easy to incorporate into scripts, tool chains, or LLM-driven workflows.

$ mo README.md
mo: serving at http://localhost:6275 (pid 12345)
$ # shell is available immediately

Use --status to check all running mo servers, and --shutdown to stop one:

$ mo --status              # Show all running mo servers
http://localhost:6275 (pid 12345, v0.12.0)
  default: 5 file(s)
    watching: /Users/you/project/src/**/*.md, /Users/you/project/*.md
  docs: 2 file(s)
    watching: /Users/you/project/docs/**/*.md

$ mo --shutdown            # Shut down the mo server on the default port
$ mo --shutdown -p 6276    # Shut down the mo server on a specific port

If you need the mo server to run in the foreground (e.g. for debugging), use --foreground:

$ mo --foreground README.md

Server restart

Click the restart restart button (bottom-right corner) to restart the mo server process. The current session — all open files and groups — is preserved across the restart. This is useful when you have updated the mo binary and want to pick up the new version without re-opening your files.

Flags

Flag Short Default Description
--target -t default Group name
--port -p 6275 Server port
--open Always open browser
--no-open Never open browser
--status Show all running mo servers
--watch -w Glob pattern to watch for matching files (repeatable)
--unwatch Remove a watched glob pattern (repeatable)
--shutdown Shut down the running mo server
--foreground Run mo server in foreground

Build

Requires Go and pnpm.

$ make build

References

About

mo is a Markdown viewer that opens .md files in a browser.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 56.9%
  • Go 36.0%
  • CSS 3.5%
  • JavaScript 2.9%
  • Other 0.7%