Quickstart¶
The smallest possible Exocortex loop: one note in, one question out.
No plugins, no synthesiser, no wiki compiler — just ingest → embed →
query. Five minutes if Docker is already on your machine.
Prerequisites¶
- Docker + Docker Compose v2
OPENAI_API_KEYexported in your shell (for embeddings)ANTHROPIC_API_KEY(or anotherllm_router-supported provider) for the retrieval step
Four commands¶
git clone https://github.com/hretheum/exocortex.git
cd exocortex
# 1. Bring Postgres + pgvector + Apache AGE up, apply migrations
docker compose up -d --build
docker compose exec api exocortex migrate up
# 2. Ingest a single note (POSTs to /capture + writes a thought row)
docker compose exec api python examples/hello-world/ingest_one_note.py
# ✓ thought_id=<uuid> ingested with embedding
# 3. Ask a question — answer + citations in <2 s on a warm cache
docker compose exec api python examples/hello-world/ask_question.py \
"what did I learn about Cypher"
Expected output (abridged):
Q: what did I learn about Cypher
A: Cypher MATCH clauses can chain through edge types ... Apache AGE
supports this within Postgres ... downside is AGE 1.6 lags behind
the official Neo4j spec.
Sources (1):
[1] Cypher quick notes
thought_id=... score=... provenance=ai_authored
What this skips (and why)¶
This is the smoke loop. It is deliberately not a full Exocortex setup:
- No plugin registration.
ingest_one_note.pywritesthoughtsdirectly. The full source pipeline (vault watcher, scorer, router, processors) is documented in the capture API runbook. - No synthesiser. Daily LLM rollups are out of scope for a 5-min smoke. See the synthesis runbook.
- No wiki compiler. Same reason — the compiler runs nightly in production.
Next steps¶
- Configuration — env vars, YAML config files, how the engine picks them up
- Writing a plugin — the
end-to-end tutorial against
examples/acme-corp/ - MCP tools reference — what the MCP
server exposes to Claude Desktop or
exocortex query - Architecture overview — L1/L2/L3 in two paragraphs