Vault Web Setup¶
Decision¶
Use Quartz v5 rather than MkDocs/Material for the Hermes vault static web view.
Quartz is the better fit because the source vault is Obsidian-native:
- Preserves Obsidian-style wikilinks and backlink/navigation concepts.
- Reads Markdown with YAML frontmatter without needing a docs-specific rewrite.
- Produces a mobile-friendly static site that can be served read-only.
- Keeps the canonical writable vault separate from any rendered/public copy.
MkDocs/Material remains a good documentation-site renderer, but it would require more normalization of Obsidian conventions and would make the vault feel less like a graph/wiki.
Repositories and directories¶
- Canonical local vault:
/home/adam/hermes-vault - GitHub backup remote:
https://github.com/ParrottPy/hermes-vault.git - Local Quartz checkout:
/home/adam/quartz - Test build output:
/tmp/hermes-vault-quartz-public
The vault remote is for backup/sync. Do not grant write access to work machines or sync a writable working copy there. Any web deployment should consume a read-only clone or build artifact.
Build command¶
Quartz v5 requires Node.js 22+. The system Node on this host may still be older, so the verified non-invasive build path is to run Quartz with an ephemeral Node 22 binary from npx:
# Regenerate the Quartz community-plugin index if .quartz/plugins/index.ts is missing
cd /home/adam/quartz
npx -y -p node@22 -p tsx node --import tsx -e 'import("./quartz/plugins/loader/gitLoader.ts").then(m=>m.regeneratePluginIndex({verbose:true}))'
# Build the Hermes vault into a static output directory
npx -y -p node@22 node /home/adam/quartz/quartz/bootstrap-cli.mjs \
build \
-d /home/adam/hermes-vault \
-o /tmp/hermes-vault-quartz-public \
--concurrency=1
Verified result on 2026-07-03:
- Quartz v5.0.0
- 154 Markdown input files found from
/home/adam/hermes-vault - 685 static files emitted to
/tmp/hermes-vault-quartz-public - Build completed successfully; only LaTeX compatibility warnings were reported for existing note content.
Configuration notes¶
/home/adam/hermes-vault/quartz.config.yaml records the vault-specific intent: Hermes Vault title, Obsidian-friendly ignore patterns, and wikilink/frontmatter/backlink support.
Current build verification used the Quartz checkout from /home/adam/quartz and the vault as the content directory. Before turning this into a hosted deployment, standardise one of these paths:
- Keep Quartz as a separate renderer repo and pass
-d /home/adam/hermes-vaultduring builds; or - Move/copy the active Quartz config into
/home/adam/quartz/quartz.config.yamland keep the vault repo as content only.
Do not create a writable rendered copy of the vault on work machines.
Phone access target¶
Target outcome: Adam can open a read-only, mobile-friendly Hermes vault from his phone without exposing the canonical writable vault.
Recommended path:
- Cloudflare Pages for hosting β deploy the Quartz static output to a Pages project such as
hermes-vault. - Cloudflare Access in front of it β allow only Adam's Google account / approved emails. Do not make the vault public unless a publish allowlist is added first.
- GitHub Actions or Prefect deployment automation β rebuild and redeploy on every
masterpush, plus a scheduled daily drift check. - Read-only content flow β Hermes commits/pushes curated vault updates; the phone site only consumes rendered static artifacts.
- Freshness monitoring β store the deployed git SHA in the build artifact and alert Slack if the site lags the vault remote by more than 24 hours.
Phone UX:
- Use the Cloudflare Pages URL first, then add a custom domain later if useful.
- Open the Access-protected URL on iPhone/Android, authenticate once with Google/OTP, then "Add to Home Screen" for app-like access.
- Quartz gives responsive navigation/search; no Obsidian app sync is required for read-only consumption.
Deployment follow-up¶
Phase 1a proves the renderer decision and local build path. The next implementation slice is to make the build reproducible and hosted:
- Standardise the Quartz build so it does not depend on a manually prepared
/home/adam/quartzcheckout. - Add a deploy pipeline from the private
ParrottPy/hermes-vaultrepo to Cloudflare Pages. - Put Cloudflare Access in front of the Pages site before adding sensitive/private folders.
- Add freshness monitoring for the daily news/research ingestion cycle.