Render an Obsidian vault as a browsable, print-friendly website. Packaged as a macOS .app so non-technical colleagues can install it in one step.
Go to the download page — zero dependencies, drag-and-drop install.
This repo is based on Quartz v4 with local customizations (print CSS, mermaid fixes, Accion branding, explorer tweaks, table styling) and a macOS packaging layer that bundles Node.js so colleagues don't need to install anything.
npm install
npx quartz build --serve
# Server at http://localhost:8080, watching ./contentPoint ./content at your Obsidian vault (symlink):
ln -sfn "/path/to/vault" content./packaging/build-app.sh # current arch
./packaging/build-app.sh --arch arm64 # Apple Silicon
./packaging/build-app.sh --arch x64 # IntelOutput lands in dist/. See packaging/README.md for details.
CI (.github/workflows/release.yml) automatically builds both architectures and publishes a GitHub Release when you push a v* tag:
git tag v1.0.0 && git push --tagsThe same workflow deploys the download page (site/) to GitHub Pages on every push to main.
The default sidebar search is Quartz's built-in FlexSearch — fast, offline, no extra setup. If you want hybrid (BM25 + vector + LLM rerank) search over your vault, you can plug in tobi/qmd.
# 1. Install qmd globally (Node ≥ 18 required)
npm install -g @tobilu/qmd
# 2. Index your vault (replace the path with your own)
qmd collection add "/path/to/your/Obsidian/vault" --name content
# 3. Generate vector embeddings (~5-10 min on first run; downloads a GGUF model)
qmd embedThe Knowledge Manager UI talks to qmd via a tiny HTTP shim that ships in this repo (qmd-search/):
cd ~/knowledge-manager/qmd-search
node server.mjs # default: http://localhost:9090Leave it running in a Terminal tab. It shells out to qmd query and returns JSON.
Edit quartz.layout.ts. In both defaultContentPageLayout and defaultListPageLayout, replace:
Component: Component.Search(),with:
Component: Component.Search({
backend: "qmd",
qmdEndpoint: "http://localhost:9090",
}),Restart Quartz — now the sidebar search queries qmd. If the qmd-search server isn't running, the panel shows a friendly "qmd unreachable" message.
Even without integrating into Quartz, you can use the standalone search page at http://localhost:9090 once the bridge server is up. See qmd-search/README.md for details.
Quartz is MIT-licensed. See LICENSE.txt.