# I want to implement what is described here. Can we have a chat about it?" Andrej Karpathy @karpat...
## Retrieval Notes
- Session id: `019d5265-3960-7a83-bebd-ea4052116bcb`
- Source: `Codex raw session`
- Last activity: `2026-04-03T08:21:29.682Z`
- Model: `gpt-5.4`
- CWD: `/Users/nickyoung`
## My Notes
<!-- Add your notes here. This section is preserved across syncs. -->
## Conversation
### User
I want to implement what is described here. Can we have a chat about it?"
Andrej Karpathy
@karpathy
·
11h
Oh and in the natural extrapolation, you could imagine that every question to a frontier grade LLM spawns a team of LLMs to automate the whole thing: iteratively construct an entire ephemeral wiki, lint it, loop a few times, then write a full report. Way beyond a `.decode()`.
elvis
@omarsar0
·
11h
I have also been obsessed with building LLM knowledge bases.
Here is one example of the type of things you can do that Karpathy is alluding to: https://x.com/omarsar0/status/2033966663855448410?s=20
LLMs are excellent at curating and searching (finding connections) once data is stored properly.
Quote
elvis
@omarsar0
·
Mar 17
Been exploring a new way to explore AI research papers to discover deeper insights.
Agents are at the center of it.
So far, I've built this little interactive artifact generator in my orchestrator to visualize things.
This allows me to change views and insights (on-demand)
kepano
@kepano
·
9h
I like this approach because it mitigates the contamination risks of agent-generated content in your primary vault... the agents need a playground too!
Quote
kepano
@kepano
·
9h
I like @karpathy's Obsidian setup as a way to mitigate contamination risks. Keep your personal vault clean and create a messy vault for your agents.
I prefer my personal Obsidian vault to be high signal:noise, and for all the content to have known origins.
Keeping a separation x.com/karpathy/statu…
superwhisper
@superwhisper
·
7h
Superwhisper x Obsidian is game changing
Meta Alchemist
@meta_alchemist
·
9h
Yeah this is golden tips
This is the methodology I've found the best for self-improving agents too btw, human readable Obsidian knowledge bases work great as an agent memory too
And you can read what's in them, and improve how your agent/LLM store things because on most other
Show more
Gavriel Cohen
@Gavriel_Cohen
·
11h
Can you share more on the incremental compilation?
I've found that if processing one by one, they don't have enough context to understand how to divide to directories.
Is there an optimal batch size? Multiple stages?
Andrej Karpathy
@karpathy
·
11h
Atm it's not a fully autonomous process, I add every source manually, one by one and I am in the loop, especially in early stages. After a while, the LLMs "gets" the pattern and the marginal document is a lot easier, I just say "file this new doc to our wiki: (path)".
Show replies"
### Assistant
I’m going to load the current vault context first so we can ground this in your actual setup, then I’ll read the system-design guidance before we sketch how an agent playground/wiki could fit cleanly beside your main vault.
### Assistant
I’m pulling the dashboard, today’s note path, and the relevant skill guidance now. After that I’ll scan your current Claude/Codex config surface so any design we discuss reflects what’s already in place rather than a generic pattern.
### Assistant
I’ve got the vault wrapper guidance. The dashboard read is hanging through the bridge, so I’m going to retry in a more targeted way and, in parallel, inspect the current Claude/Codex config surfaces plus the system-design practices file so our discussion stays tied to your actual constraints.
### Assistant
The Obsidian CLI isn’t returning note contents cleanly for `read` right now, so I’m falling back to direct file reads just for the dashboard and today’s note. After that I’ll summarize how this “ephemeral agent wiki” idea maps onto your vault without contaminating the high-signal layer.
### Assistant
The vault lives under a different filesystem root than `/Users/nickyoung`, so I’m locating the actual note paths now. Once I have that, I can fold your current dashboard context into the design discussion instead of keeping it abstract.
### Assistant
Yes. I think there’s a very implementable version of this that fits your setup well.
What the thread seems to be pointing at, as I read it, is not “let the model write directly into the real vault.” It’s more like:
- sources go into an agent playground
- a team of agents builds a temporary, human-readable wiki around a question
- other agents lint, dedupe, and cross-link that wiki
- only a much smaller, provenance-preserving subset gets promoted into the high-signal vault
That separation feels especially right for you because your main vault is already doing a different job: durable notes, project context, and known-origin material. Your current [Dashboard.md](/Users/nickyoung/My%20Obsidian%20Vault/Dashboard.md) is basically a clean coordination surface, and today’s [2026-04-03.md](/Users/nickyoung/My%20Obsidian%20Vault/Daily%20Notes/2026-04-03.md) is still pretty empty, so this is a good moment to design the “messy side” without tangling it into existing capture habits.
My interpretation is that the clean architecture has four layers:
- source layer: PDFs, web pages, transcripts, papers
- scratch layer: an ephemeral wiki or agent vault where agents summarize, cluster, link, and argue
- review layer: verifier/linter agents that check citations, redundancy, contradictions, and missing context
- promotion layer: a human-approved export into your real vault, usually as a distilled note, session update, or source-backed capture
If we built it, I would strongly avoid letting agents create arbitrary long-lived notes in the main vault. I’d rather have them write into something like `agent-scratch/` or even a separate Obsidian vault entirely, with every page carrying provenance fields like `source`, `agent`, `timestamp`, `status`, and maybe `derived_from`. Then promotion becomes an explicit act, not an accident.
The part that feels most interesting technically is the middle loop. A single user question could spawn agents with distinct roles:
- ingestion agent: extract claims, entities, and citations from sources
- cartography agent: organize pages/directories/tags in the scratch wiki
- synthesis agent: write cross-page summaries and unresolved questions
- adversarial reviewer: look for hallucinated links, weak claims, and category mistakes
- final reporter: produce a report only after the scratch wiki stabilizes
That gives you Karpathy’s “iteratively construct an entire ephemeral wiki, lint it, loop a few times, then write a full report,” but with a place for human inspection before anything becomes durable memory.
The main design choice, I think, is this: do you want the artifact to be primarily a research workspace or primarily an orchestration substrate? Those lead to different implementations.
- If research workspace first: use markdown files, folders, backlinks, and Obsidian views as the native substrate.
- If orchestration first: keep the true state in a database/graph store and render markdown as a view.
- If you want the sweet spot: markdown as source of truth in the scratch vault, plus a lightweight index for retrieval and validation.
For you, I’d lean toward the third option. Human-readable markdown keeps the system inspectable and corrigible, but a small side index can help with retrieval, duplicate detection, and “what changed in this compilation pass?”
If you want, the next useful step is for us to choose one concrete target:
1. paper-to-wiki compiler for research PDFs
2. question-to-brief system that builds a temporary wiki before answering
3. continuous agent vault that accumulates scratch knowledge over time
My guess is that `1` is the safest place to start, because it gives the agents a bounded corpus and makes provenance easier to keep intact.
*La difficoltà vera non è generare più testo, ma costruire uno spazio intermedio in cui il testo resti leggibile, verificabile e separato dalla memoria che vuoi conservare.*
### User
Okay, you're not giving me enough detail to really understand what you're suggesting. And also I don't know. You seem to have forgotten that a large amount of the sources I'll be using are PDFs on a massive folder in a massive folder on my computer. You also seem to have forgotten that I synced between a desktop and a laptop as well. So yeah, you really need to take a look at actually how things are at the moment before making any suggestions, please. Quite disappointing an answer from you.Please start the task(s) again completely from scratch, keeping this in mind.
### Assistant
You’re right. I answered too generically and didn’t ground it in your actual filesystem, your PDF corpus, or the desktop/laptop sync reality. I’m restarting from scratch by inspecting the real setup first: vault roots, Learning/ layout, sync/config surfaces, and how agent-generated material would actually have to live on disk.
### Assistant
I’m pulling the local rules and file-handling guidance now. After that I’m going to inspect the real `Learning/` tree, PDF distribution, and the sync/config files that tell us what can safely exist on both machines.
### Assistant
I’ve loaded the relevant local rules. Next I’m checking the actual corpus shape: where the vault lives, how large the Learning tree is, how it’s organized, and what sync/config machinery already exists for Codex and Claude across machines.
### Assistant
I’ve confirmed the basic shape: the vault is local under `~/My Obsidian Vault`, while the source corpus is a separate Google Drive `Learning/` tree with 3,533 files and a mix of flat files plus topical subfolders like `generating-philosophy` and `typography-aesthetics`. I’m checking sync and persistence next, because that determines whether an agent workspace should live inside the vault, beside it, or in a different synced substrate.
### Assistant
The picture is getting clearer: `Learning/` is genuinely large and heterogeneous, not a neat project-only corpus, and the vault already contains some agent-ish/system folders (`Agent Client`, `.claude`, `.smart-env`, backups). I’m now reading the sync-safe Codex config repo and the vault plugin surface so I can tell you what kind of agent workspace would actually survive desktop/laptop use without creating a mess.
### Assistant
One concrete constraint is now clear: Codex config is already explicitly split into sync-safe state and machine-local state, with `~/.codex-config` git-synced every 60 seconds. That means if we add orchestration rules or skills, they can propagate across desktop and laptop, but any large generated corpus should probably not live in `~/.codex` itself. I’m checking the existing agent/plugin surfaces in the vault next so I can see whether there’s already a partial playground there.
### Assistant
There’s already an agent-related surface in the vault: an `agent-client` Obsidian plugin with lots of persisted session JSON under `.obsidian/plugins/agent-client/sessions/`, plus an `Agent Client/` folder containing markdown exports. So this isn’t a blank-slate “should there be an agent playground?” question; it’s partly a “how should that playground relate to what already exists?” question. I’m reading the plugin config and one recent session note now.
### Assistant
I’ve confirmed the plugin is already persisting agent sessions inside the vault and exporting markdown logs into `Agent Client/`. That means one possible implementation path is to extend an existing scratch surface rather than invent a brand-new one. I’m pulling the top of its settings file now so we can see the current export folder and defaults instead of guessing.
### Assistant
I’ve got an important detail from the existing plugin: agent chats auto-export into `Notes` by default, not into `Agent Client/`. That’s exactly the kind of contamination pressure you were warning about. I’m checking two more things before I synthesize: how Claude-side config sync works across machines, and whether the vault itself is under git/versioned in a way that changes the storage options.
### Assistant
Another concrete constraint: the vault itself is not a git repo, while Claude and Codex configs are synced separately by git/LaunchAgent machinery. So any large agent-generated markdown corpus placed in the vault would ride whatever non-git sync you already use for the vault and could easily spill across machines. I’m doing one last pass on your project/session surfaces so I can tell whether the right unit of compilation is “whole Learning corpus” or “project-scoped source sets.”
### Assistant
The project layer matters a lot here. You already have active project notes and matching project-specific `Learning/` subfolders: `generating-philosophy` has 87 files, `typography-aesthetics` 63, and `vr-perception` 34. That pushes me away from “compile the whole 3,533-file library” and toward “compile bounded project corpora first.” I’m reading the explicit Academic References sections so I can match the design to how you already point projects at source folders.
### Assistant
## Ground truth
I restarted from the actual filesystem, and the picture is much more specific than my first answer suggested.
What I observed:
- Your vault is local at [Dashboard.md](/Users/nickyoung/My%20Obsidian%20Vault/Dashboard.md) and [Daily Notes/2026-04-03.md](/Users/nickyoung/My%20Obsidian%20Vault/Daily%20Notes/2026-04-03.md), not inside Google Drive.
- Your source corpus is separate in Google Drive at `~/Library/CloudStorage/
[email protected]/My Drive/Sync/Learning`.
- That `Learning/` tree contains 3,533 files.
- It is partly flat and partly foldered. Top-level project folders include:
- `generating-philosophy` with 87 files
- `typography-aesthetics` with 63 files
- `vr-perception` with 34 files
- `Papers` with 402 files
- Your session notes already point projects at those source folders:
- [Sessions/Generating Philosophy.md](/Users/nickyoung/My%20Obsidian%20Vault/Sessions/Generating%20Philosophy.md)
- [Sessions/Typography Aesthetics.md](/Users/nickyoung/My%20Obsidian%20Vault/Sessions/Typography%20Aesthetics.md)
- [Sessions/VR and Perceptual Structure.md](/Users/nickyoung/My%20Obsidian%20Vault/Sessions/VR%20and%20Perceptual%20Structure.md)
- Your vault itself is not a git repo.
- Claude and Codex configs are synced across machines separately:
- Claude via [claude-config-sync.sh](/Users/nickyoung/.local/bin/claude-config-sync.sh)
- Codex via [README.md](/Users/nickyoung/.codex-config/README.md) and the scripts in [scripts/auto-sync.sh](/Users/nickyoung/.codex-config/scripts/auto-sync.sh), [scripts/export-from-live.sh](/Users/nickyoung/.codex-config/scripts/export-from-live.sh), [scripts/apply-to-live.sh](/Users/nickyoung/.codex-config/scripts/apply-to-live.sh)
- You already have an agent surface inside Obsidian:
- plugin: [manifest.json](/Users/nickyoung/My%20Obsidian%20Vault/.obsidian/plugins/agent-client/manifest.json)
- exported markdown logs: [Agent Client](/Users/nickyoung/My%20Obsidian%20Vault/Agent%20Client)
- persisted plugin sessions under `.obsidian/plugins/agent-client/sessions/`
- One especially relevant detail: the current agent-client export settings default to exporting into `Notes`, not a separate scratch location. That came from the plugin settings JSON.
So the problem is not abstractly “should we build an agent wiki?” It is more concretely:
1. how to compile from a very large external PDF library
2. how to do it project-first rather than whole-library-first
3. how to keep generated material from contaminating `Notes/`
4. how to make it survive desktop/laptop use cleanly
## What I think follows from that
My interpretation from your actual setup is:
- The whole `Learning/` library is too large and too messy to treat as one undifferentiated agent knowledge base.
- Your existing project notes already define a better unit of work: a project-scoped source folder plus a session note plus captures.
- The current danger is not lack of storage; it is wrong storage. If agent exports keep landing in `Notes/`, they blur generated scratch with durable thought.
So if we implement the Karpathy-style idea in your environment, I think the right shape is:
- Sources stay where they are now in `Learning/`.
- Agents build a project-scoped scratch wiki from a bounded source set.
- That scratch wiki is separate from `Notes/`, `Sessions/`, and longform writing.
- Promotion into the real vault is explicit and selective.
Concretely, I would not start with “compile all 3,533 files.” I would start with a compiler that targets one existing project folder, like `Learning/generating-philosophy/`, because your system already has:
- a project note
- captures
- known source folder
- active manuscript context
## A design that matches your setup
Here is the architecture I would propose now that I’ve looked at the system.
1. Corpus selector
- Input is not “the vault” or “all PDFs.”
- Input is one project session note plus its declared source folder.
- Example: [Sessions/Generating Philosophy.md](/Users/nickyoung/My%20Obsidian%20Vault/Sessions/Generating%20Philosophy.md) points to `Learning/generating-philosophy/`.
2. Extraction layer
- Each PDF gets text extracted to machine-readable intermediate files.
- This should not go in `Attachments/_temp...` forever as ad hoc one-offs.
- It should go in a dedicated generated workspace with stable IDs and provenance.
3. Scratch wiki layer
- Agents create markdown pages for:
- source summaries
- concepts
- authors
- disputes/tensions
- open questions
- candidate connections
- Every page should carry provenance fields like:
- `project`
- `source_file`
- `source_pages`
- `generated_at`
- `generator`
- `status: scratch`
4. Review layer
- Separate agents check:
- duplicate pages
- unsupported claims
- bad citations
- cross-link quality
- whether a summary actually came from the source text
5. Promotion layer
- Nothing automatically enters `Notes/`.
- Promotion should produce one of only a few things:
- a capture note in `Notes/`
- an update to a project session note
- a source-backed working note for a manuscript
## Where it should live
This is the storage question your setup makes unavoidable.
I see three viable options.
1. Separate folder inside the vault, synced with the vault
- Example: `Agent Scratch/` or `Scratch Wiki/`
- Pros: Obsidian-native, searchable, visible on desktop and laptop, easy backlinks/Bases
- Cons: still inside the same vault, so noise/performance/contamination risk remains
2. Separate Obsidian vault beside the real one
- Example: `~/My Obsidian Agent Vault`
- Pros: much cleaner separation, matches the “messy vault” idea directly
- Cons: harder linking back into the real vault, more friction moving results across
3. Hybrid
- Generated corpus and extraction artifacts live outside the main vault
- A very small reviewed index or export surface appears inside the main vault
- Pros: best contamination control
- Cons: more implementation work
Given your current setup, I would tentatively favor `1` or `3`, not `2`, for the first version.
Why:
- you already work heavily inside one Obsidian vault
- you already have project notes and Bases there
- you already have an agent-client plugin there
- desktop/laptop sync becomes easier if the scratch layer rides the same vault sync you already trust
But I would still keep it out of `Notes/`. That part feels non-negotiable.
## The immediate problem I would fix first
Before building a whole compiler, I would change the storage boundary.
Right now the agent-client plugin appears set to export chats into `Notes`. For this larger agent-wiki direction, that is the wrong default. Even if we built nothing else, I think we should stop agent conversational exhaust from flowing into durable note space.
Then the first real implementation target would be:
- project-scoped scratch folder
- one compiler for one project folder
- PDF extraction plus per-source summary pages
- a project index page that agents can iteratively improve
If we do that for `generating-philosophy`, we’ll learn whether the useful artifact is:
- an ephemeral wiki
- a reviewed source map
- a concept graph
- or a manuscript support surface
## My current recommendation
If we keep this grounded in your actual setup, I think the best first build is:
- use one existing project folder in `Learning/`
- generate into a dedicated scratch location, not `Notes/`
- keep the scratch markdown human-readable and Obsidian-browseable
- add explicit provenance everywhere
- promote only reviewed outputs into the high-signal layer
If you want, the next step can be very concrete: I can inspect the current `agent-client` settings/code and sketch the exact folder/schema I’d use for a first-pass `generating-philosophy` scratch wiki inside your present vault layout.
*Con una biblioteca di PDF così ampia, la mossa giusta non è trattarla come un unico corpo, ma costruire compilazioni locali, tracciabili e separate per progetto.*