Your own knowledge base, maintained for you by Claude.
Save things with one tap. Ask questions later. Everything cited, dated, and kept current.
You keep finding good things — videos, articles, papers, repos, threads. They pile up in bookmarks and group chats and disappear. dex turns that stream into a living wiki: every source fetched and transcribed, every fact traced to where it came from, every page kept current as new material arrives — with the old understanding preserved as history, not overwritten.
You don't run anything. Claude operates the whole system; your job is taste — save things, ask questions, correct it when it's wrong. The design follows Karpathy's llm-wiki pattern: "The human's job is to curate sources, direct the analysis, ask good questions. The LLM's job is everything else."
Let Claude set it up for you. The Claude desktop app is the right home for it — a scheduled task there sweeps your captures on its own, and any session on the folder answers questions. The Claude Code CLI works just as well. Start a session on your home folder (a session has to start somewhere; setup picks the dex's real home with you) and paste:
Fetch https://raw.githubusercontent.com/leeovery/dex/main/docs/start.md and follow it.
Claude asks whether you're creating a new dex or joining an existing one, interviews you, and sets everything up. Prefer to drive it yourself? Open docs/start.md and follow it.
- Save from anywhere — share a link from your phone or paste it into a session: "add this to dex". It gets fetched, transcribed if it's a video, filed with provenance, and woven into the relevant pages.
- Ask anything — "what's the current thinking on X?" Claude answers from your wiki with citations, prefers the newest material, and files genuinely new answers back in so they compound.
- Trust but verify — the knowledge base checks itself over: when an ingest finds no health check in the past week, it runs one — broken links, missing citations, stale pages, contradictions, and overgrown topics get found and fixed. You can also ask for one anytime. Corrections you make by hand are pinned and survive every rebuild.
One dex, many brains: each knowledge base is its own private instance repo (dex-cooking, dex-woodworking, one for your partner's business...) and this public repo is the shared engine they all run on.
sources (phone captures, chat exports, links dropped in a session)
↓ normalize one corpus item per share, provenance stamped
↓ enrich everything behind every link: transcripts, articles, READMEs, papers
↓ digest (Claude) a permanent fact-index of every item
↓ taxonomy (Claude) topics + entities, discovered bottom-up
↓ assemble (Claude) wiki pages — dated claims, [[wikilinks]], citations
↺ verify + lint claims checked against sources; full coverage enforced
What makes it trustworthy rather than vibes-in-a-wiki:
- Provenance at ingest — who shared it, where, when: captured once, at the only moment it exists.
- The wiki is a build artifact — the corpus is truth; pages regenerate without losing anything.
- Every claim cites corpus items (never other wiki pages), and citations are mechanically checked.
- Coverage is enforced — every item is cited somewhere or explicitly ledgered. Nothing silently vanishes.
- Recency first — pages lead with "current state (as of ...)" and keep superseded practice as marked history. Conflicts between old and new are surfaced, not smoothed over.
See example/ for a three-file toy instance showing the shapes, and
instance/skills/dex-ingest/references/schema.md for the corpus format.
Under the hood (for agents and the curious — humans never need this)
Instances run the engine's mechanical commands via a bin/dex shim
(uvx --from git+https://github.com/leeovery/dex dex-<cmd>, cwd = instance root):
| command | does |
|---|---|
dex-normalize |
raw chat exports → corpus items (DiscordChatExporter JSON) |
dex-enrich run |
fetch behind every corpus URL: YouTube captions, article text (with Wayback fallback), GitHub repos/profiles, arXiv papers, tweets |
dex-enrich whisper |
transcribe caption-less media (OpenAI key in instance .env) |
dex-lint |
broken wikilinks, bad citations, orphan items, index drift, stale pages |
dex-exclude <json> |
permanently purge out-of-scope items (survives re-normalization) |
dex-inbox |
materialize staged binary captures: release asset → media/<id>/ (LFS), asset deleted (ensure creates the standing inbox release) |
dex-sync |
refresh engine-managed instance machinery (skills, bin/dex, .gitattributes) |
dex-new <name> |
scaffold a new instance from the engine's bundled template |
Capture inbox: every capture is one .md in inbox/, written via the
GitHub contents API — body = URL and/or note; a capture that carried a binary
(image, PDF, any file) stages it as an asset on the repo's standing inbox
release and references it in frontmatter. No server-side machinery at all: the
PUT is the commit, and ingest moves staged binaries into media/ where LFS
applies. Suggestion is untrusted by design — scope filtering happens at
ingest, inside the instance. Full protocol: docs/capture.md.
Instance layout: CLAUDE.md (scope + operations contract) · inbox/ (pending
captures) · raw/ (verbatim exports) · corpus/ (append-only items) ·
enrichment/ · media/ (captured binaries, LFS) · wiki/
(topics/entities/syntheses plus index, log, pins) · state/ (digests, taxonomy,
ledgers, normalize-config.json).