What Is It
Alethograph is a web-based research knowledge platform that serves the Obsidian Academic Research vault as a live website at alethograph.com. It runs from a Mac Mini/MacBook acting as a server, with Cloudflare handling DNS, HTTPS, and access control.
The long-term vision is an interactive research assistant: visitors can browse the knowledge graph and ask questions answered by Claude, grounded in the vault’s papers, concepts, and ideas.
Architecture
Obsidian Vault (iCloud)
|
| symlink
v
Quartz v4.5.2 Cloudflare Tunnel Cloudflare Access
(static site gen) ---> (cloudflared daemon) ---> (email-based auth)
localhost:8080 encrypted tunnel alethograph.com
|
| reads from
v
~/.claude/research.db (SQLite, migrating to Neo4j Aura)
Components
| Component | Role | Location |
|---|---|---|
| Quartz | Renders Obsidian markdown as a website with graph view, search, LaTeX | ~/quartz/ |
| Cloudflare Tunnel | Exposes localhost:8080 to the internet without opening ports | ~/.cloudflared/config.yml |
| Cloudflare Access | Email-based authentication gate (Zero Trust) | Cloudflare dashboard |
| launchd | Auto-starts Quartz + tunnel on boot | ~/Library/LaunchAgents/com.alethograph.*.plist |
| Research DB | Stores paper/concept/researcher relationships | ~/.claude/research.db (migrating to Neo4j Aura) |
Domain
- Domain:
alethograph.com(registered on Cloudflare) - Name origin: Greek aletheia (truth as unconcealment) + graph (writing instrument) = “truth-writing instrument”
- Tunnel ID:
e623f937-2a2b-4f8f-81c3-4d682f16bc33
Current State (Phase 1: Static Site)
What works
- Quartz builds and serves all 537+ vault notes
- Cloudflare tunnel routes
alethograph.comandwww.alethograph.comto localhost:8080 - Cloudflare Access provides email-based authentication
- launchd auto-restarts both services on reboot
- Wikilinks, LaTeX (KaTeX), tags, frontmatter, graph view all render correctly
Known issues
- 404 popups when clicking unresolved wikilinks (notes referenced but not yet created)
- PDFs excluded from build (
Filesdirectory in ignorePatterns) — not served - Git date warnings (vault not tracked by git, so dates fall back to filesystem)
- Mac must stay awake to serve (System Settings > Energy > Prevent sleep)
Configuration Files
Quartz config (~/quartz/quartz.config.ts)
pageTitle: “Alethograph”baseUrl: “alethograph.com”ignorePatterns: private, templates, .obsidian, Files- LaTeX via KaTeX, ObsidianFlavoredMarkdown enabled
- SPA mode, popovers, graph view all enabled
Cloudflared config (~/.cloudflared/config.yml)
tunnel: e623f937-2a2b-4f8f-81c3-4d682f16bc33
credentials-file: /Users/osianshelley/.cloudflared/e623f937-2a2b-4f8f-81c3-4d682f16bc33.json
ingress:
- hostname: alethograph.com
service: http://localhost:8080
- hostname: www.alethograph.com
service: http://localhost:8080
- service: http_status:404Launch agents (~/Library/LaunchAgents/)
com.alethograph.quartz.plist— runsnpx quartz build --servein~/quartz/, KeepAlivecom.alethograph.cloudflared.plist— runscloudflared tunnel run alethograph, KeepAlive
Vault symlink
~/quartz/content -> /Users/osianshelley/Library/Mobile Documents/com~apple~CloudDocs/Obsidian/Academic Research
Planned Phases
Phase 2: Neo4j Graph Database
- Migrate from SQLite to Neo4j Aura (cloud graph DB)
- Enables sharing the knowledge graph with collaborators
- Plan documented in
~/.claude/plans/concurrent-sniffing-lollipop.md - Nodes: Paper, Concept, Researcher, Book, Idea, Topic
- Relationships: STUDIES, KNOWS, DERIVED_FROM, EVIDENCED_BY, etc.
Phase 3: Interactive Research Assistant
- Chat interface on
alethograph.comwhere visitors can query the vault - Backend calls Claude API with vault content as context
- Answers grounded in papers/concepts with wikilink citations
- Powered by the same logic as
/researcher-*skills - Key decisions needed:
- API cost model (who pays for Claude calls?)
- Depth of answers (simple Q&A vs full researcher-level)
- Neo4j integration for graph-powered retrieval
How to Operate
Start manually
cd ~/quartz && npx quartz build --serve &
cloudflared tunnel run alethograph &Check status
curl -s -o /dev/null -w "%{http_code}" http://localhost:8080 # should be 200
launchctl list | grep alethograph # check launch agentsRebuild after vault changes
Quartz watches for file changes in --serve mode. If it doesn’t pick up a change, restart:
launchctl kickstart -k gui/$(id -u)/com.alethograph.quartzView logs
tail -f /tmp/quartz.log
tail -f /tmp/cloudflared.log