✅ Quartz
| Feature | Choice | Notes |
|---|---|---|
| Comments | Remark42 | Private, self-hosted, anonymous-friendly default. |
| Graph | Enabled | Compact local graph plus global graph. |
| Explorer | Enabled | Full tree with curated labels. |
| Canvas | Local fork | Safe link cards and sidebar-open default. |
| Mermaid | Enabled | Dark-first syntax-safe diagrams. |
| Bases | Optional | Use only when content needs structured views. |
| Note Properties | Enabled | Keep concise metadata. |
| Reader Mode | Enabled | Keep for long references. |
| Popovers | Enabled | Useful for dense SSOT links. |
| Search | Right rail | Search before TOC/backlinks. |
| Backlinks | Enabled | Keep for knowledge graph browsing. |
| Giscus | Disabled | Requires public GitHub repo and Discussions. |
| Remark42 | Default | Proxy from same-origin /remark42. |
| Typebot | Recommended | Use when a real bot and viewer URL exist. |
| Chatwoot | Alternative | Pick only when a human inbox is required. |
Agent Bubble
Default recommendation: Typebot self-hosted for an agent-style guided bubble because it supports bubble initialization, custom CSS parts, preview messages, commands, and Docker self-hosting.
Chatwoot is the alternative only when a human/operator inbox is required; it brings Rails, Postgres, Redis, workers, and reverse proxy operations.
Do not enable a floating chat widget until a real Typebot bot ID and self-hosted viewer URL exist. No placeholder widget, no dead bubble.