Quickstart: Researcher
If you read more than you can remember, take notes you never revisit, and feel like your reading list has become a graveyard of good intentions — this is for you.
What you get
- Automated synthesis of papers and articles — overnight, clusters of related notes become “perspective” documents that summarize what your sources collectively say
- Resurfacing engine — an SM2-style spaced repetition algorithm resurfaces important notes based on decay + graph proximity (the more connected a note is, the more often it comes back to you)
- Gap Radar — weekly report identifying topic clusters that are under-explored or missing decisions
- Contradiction detection across sources — when two papers say different things about the same construct, you find out
Prerequisites
- Docker (Desktop or engine)
- An Obsidian vault, or just a folder of
.mdfiles
Step 1: Start the stack
git clone https://github.com/hretheum/exocortexcd exocortexcp docker-compose.override.yml.example docker-compose.override.ymldocker compose up -d --buildStep 2: Point the vault at your notes
Edit .env:
EXOCORTEX_VAULT_PATH=/Users/you/Documents/research-vaultThen restart:
docker compose restart vault-watcherStep 3: Ingest existing notes
If you already have hundreds of notes, bulk-ingest them once:
docker compose exec api python -m exocortex ingest --vault /vaultThis walks the vault, extracts thoughts, generates embeddings, and builds the initial graph. Expect ~1 minute per 100 notes.
Step 4: Let it synthesize overnight
Synthesis runs at 03:00 UTC by default (configurable). After the first night, check:
ls /your-vault/wiki/by-topic/You’ll see auto-generated perspective documents grouped by topic cluster — each one citing the source notes it was synthesized from.
The resurfacing engine
Important notes don’t stay important by themselves — they need to come back to you. Exocortex implements SM2 (the SuperMemo algorithm used by Anki) over your notes, weighted by graph proximity to recent activity.
Concretely:
- A note you wrote 3 months ago that connects to something you read yesterday gets surfaced today
- A note in an isolated corner of the graph gets surfaced less often (it has lower expected value to your current thinking)
- You can manually mark a note as “I’m done with this” to stop resurfacing
The surface for this is the Resurfacing pane in wiki/_home.md — refreshed nightly.
The Gap Radar
Weekly (Sunday 22:00 UTC by default), Gap Radar emits a report into wiki/gap-radar/YYYY-WW.md:
- Topic clusters with many sources but no synthesis
- Clusters where the last activity was >60 days ago
- Topics where you’ve captured 2+ contradicting positions but never resolved them
Screenshot
A research workflow that works
- Capture freely — drop a
.mdper paper in your vault, write notes in your own words. Don’t try to organize. - Let synthesis run nightly — wake up to perspectives that connect papers you didn’t realize were related.
- Trust the resurfacing pane — don’t manage a reading list, let the system tell you what’s relevant now.
- Review the Gap Radar weekly — it tells you where your thinking is thin.
- Use MCP
ask()while writing — pull quotes and citations from your own corpus with a single tool call from Claude Desktop.
Next steps
- Configure synthesis cadence and thresholds
- Understand the knowledge layers — source / graph / query memory
- MCP tools reference — pull from your corpus while writing