Exocortex
A personal knowledge OS that thinks while you sleep.
Exocortex is a self-hosted reasoning engine for your notes. It ingests what you read, hear, and decide; stores it as an append-only graph (Postgres + pgvector + Apache AGE); and asks an LLM to compile a plain-Markdown wiki from that graph every night. Obsidian, Notion, Telegram, and your shell are surfaces — the brain lives in Postgres.
What it does
- Ingests vault files, mail, RSS feeds, meeting transcripts, and
anything you
POSTto/capture— turning each into typed thoughts and graph edges - Synthesises the graph on a schedule (default daily) into a compiled Markdown wiki, perspective-typed by domain (client, project, person, news cluster, …)
- Answers questions via GraphRAG — hybrid retrieval over pgvector HNSW + Apache AGE traversal, with provenance-aware ranking and inline citations
- Surfaces contradictions (
find_contradictions), open action items, and gaps in your knowledge through an MCP server and a capture API
It is not a notes app, not a search wrapper around your files, and not a chatbot. It is a system that processes your knowledge on its own clock against your data.
When Exocortex makes sense
You probably want Exocortex if:
- You already have a substantial body of personal notes (a few hundred files at minimum) and the volume has stopped being manageable by hand
- You want the system to surface things — contradictions, forgotten notes, knowledge gaps — without you having to ask
- You are comfortable running Postgres in Docker on a small VPS or a homelab, and reading enough YAML to configure a few plugins
- You want plain Markdown as the rendered output, on disk, so any editor (Obsidian, vim, VS Code) keeps working
You probably do not want Exocortex if:
- You are looking for a notes app with sync and a polished mobile UI — Obsidian or Notion are still better at that, and Exocortex treats both as surfaces, not replacements
- You have under a hundred notes and process them by hand without pain — the system's overhead is wasted on small corpora
- You are not comfortable self-hosting; there is no managed version and the license does not allow anyone to offer one
Architecture in one diagram
L1 — sources of truth
┌─────────────────────────────────────────────────────┐
│ vault/*.md · email · RSS · meetings │
└─────────────────────────────────────────────────────┘
│ Capture API (POST /capture)
▼
L2 — the graph
┌─────────────────────────────────────────────────────┐
│ thoughts (pgvector) ─edges (AGE, 35 types)─→ │
│ syntheses (LLM, on-demand) │
└─────────────────────────────────────────────────────┘
│ │
write-time fork query-time fork
(wiki compiler nightly) (GraphRAG, MCP tools)
│ │
▼ ▼
L3 — surfaces
┌─────────────────────────────────────────────────────┐
│ Obsidian wiki · Notion · Telegram · CLI │
└─────────────────────────────────────────────────────┘
The graph (L2) is canonical. Surfaces (L3) are regenerated from it. Edits go to L1; nothing edits L2 directly. See EXOCORTEX.md for the long version.
Quick start (5 min)
Walk through examples/hello-world/ — a
self-contained guide that takes you from docker compose up to your
first synthesised page in under five minutes, with no plugins and a
toy vault.
Examples
examples/hello-world/— minimal, no plugins, ~5 minexamples/acme-corp/— a fictional company plugin with a custom perspective, MCP tool, and domain compiler in ~150 lines
Documentation
Full docs site: https://exocortex-os.github.io/exocortex/
(also browsable as Markdown under docs/).
- EXOCORTEX.md — design document (motivation, architecture, plugin system, principles, roadmap)
- Writing a plugin — the five extension
points end-to-end, walked through the
acme-corpexample - Contributing — house rules, where to start, what we won't merge
plugins/README.md— short version of the plugin contract (registry API, entry points)
License
Apache 2.0 with the Commons Clause — see LICENSE,
NOTICE, ATTRIBUTION.md, and
docs/legal/license.md
for the plain-language version. Short form: use it, modify it, build
on it; you cannot resell Exocortex itself or run it as a paid SaaS.
Release files for exocortex-os 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| exocortex_os-0.1.0.tar.gz | 357.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| exocortex_os-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 755.1 kB
Release files / exocortex_os-0.1.0.tar.gz
| Download URL | exocortex_os-0.1.0.tar.gz |
|---|---|
| Size | 357.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d1dc3c4a8f735808c9c3b7e90761a06590a72958151418d74c6bdaa1f35fce06
|
|
BLAKE2b-256 checksum How to use checksums |
8a46656f96aca7afdeb8620405eaa40fe124a08b62bf78dd5366a5e4a7594cf5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|
Release files / exocortex_os-0.1.0-py3-none-any.whl
| Download URL | exocortex_os-0.1.0-py3-none-any.whl |
|---|---|
| Size | 397.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
376d7b1939216f455b26d003da38c7c2af1dfd4411766388c72ac1ef064515c9
|
|
BLAKE2b-256 checksum How to use checksums |
54aee4d93e2c6280413b9c82ca841650553c8e1bb493d10a705a89c810cb345d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|