OysterMD is an open-source alternative to Obsidian.md, a local-first knowledge management system based on plain markdown files with bidirectional linking to build an interconnected knowledge graph. OysterMD aims to fully implement Obsidian's features while extending them with new capabilities.
Features:
- AST generation for CommonMark specification, Github-flavored Markdown, and Obsidian-specific extensions1.
- Static site generator: publish vault to HTML (alternative to Obsidian Publish)
- Optional extensions: Mermaid diagrams, TikZ, Quiver, HTML embeds
- mkq - A standalone jq-inspired CLI for querying Markdown
- More to come: markdown transclusion, UI, LSP...
cargo install oyster-mdTo install with the serve command (local dev server with live reload):
cargo install oyster-md --features servegit clone https://github.com/hon-gyu/oyster.git
cd oyster
cargo build --releaseThe binary will be available at ./target/release/oyster.
To build with the serve feature:
cargo build --release --features serveGenerate a static website from your Obsidian vault:
oyster build --output <OUTPUT_DIR> <VAULT_ROOT_DIR>Available options:
-o, --output <OUTPUT>- Output directory for the generated site-t, --theme <THEME>- Theme to use (available themes:dracula,tokyonight, andgruvbox; default:tokyonight)-f, --filter-publish- Whether to only export notes with the publish flag set in the frontmatter-p, --preserve-softbreak- Render softbreaks as line breaks-m, --mermaid-render-mode <MODE>- Options for rendering mermaid diagrams:build-time: Usemmdcto render at build timeclient-side: Use mermaid.js in the browser
--tikz-render-mode <MODE>- Options for rendering TikZ diagrams:build-time: Uselatex2pdfandpdf2svgclient-side: Use TikZTeX in browser
--quiver-render-mode <MODE>- Options for rendering Quiver diagrams:build-time: Uselatex2pdfandpdf2svgraw-latex: Keep raw LaTeX
--custom-callout-css <FILE>- Path to custom CSS file for callout customization
Test your generated site locally with:
python3 -m http.server 8000 --directory ./output/siteThen open http://localhost:8000/home.html in your browser.
- ✅ Parse markdown using pulldown-cmark and build a syntax tree
- ✅ File / Note reference
- ✅ Heading reference
- ✅ TOC generation
- ✅ Block reference
- SSG
- ✅ v0: minijina + pulldown-cmarks's html writer; backlinks component; correct links
- ✅ v1: type-safe ast-based html writer (maud); backlinks component;
- ✅ more components
- ✅ TOC
- ✅ Explorer
- ✅ Homepage
- ✅ Sidebar explorer
- and more components
- ⬜ Graphview
- ✅ filter by frontmatter
- ⬜ Tag page
- Embed image
- ✅ basic embed
- ✅ resize embed
- ✅ Embed files:
- ✅ note, heading, and block
- pdf, video, audio
- ✅ HTML
- ✅ HTML transclusion
- 🚧 Markdown transclusion
- LaTeX support
- ✅ basic support (KaTeX)
- ✅ TikZ; Quiver (extension)
- ✅ Mermaid diagram
- ⬜ Bases
- ✅ Callout
- ✅ Custom callout
- ⬜ CodeGen
- ✅Markdown to structured data (YAML / JSON)
- ⬜ CHANGELOG validation
- ✅ query CLI
- ✅ SSG hot reload
- ⬜ LSP (inspired by markdown-oxide)
Footnotes
-
wikilinks, embeded notes, callouts ↩