Background
There are so many details we need to remember in life. Recently I've been
working on a legacy project that was written years ago with no maintainers left.
I've had to continuously dig through thousands of lines of my own notes just to
remember how a particular piece of the application works. Sifting through notes
to find one detail takes time I'd rather spend architecting and building.
AI agents change that. They make it much easier to store and retrieve
information you wrote down days, months, or years ago.
What is Obsidian
Obsidian is a note-taking app that stores everything as
plain markdown files. It lets you organize and structure your notes in a
flexible way, and because the files are plain text on disk, anything that can
read a directory can read your notes, including an AI agent.
For projects, I use Obsidian as my personal documentation: how a system works,
why a decision was made, what the process flows are. Think of it as a second
brain. Everything lives in one place.
The part that makes it work with an agent isn't the app, it's the linking.
Obsidian lets you create bidirectional links between notes with
[[Note Name]]. That turns your vault from a pile of files into a graph you can
hand an agent a single entry point to.
How I structure my files
Obsidian is flexible enough that there are a dozen reasonable ways to set this
up. Here's mine, but you can adapt it to whatever fits your style.
I keep two folders. MOC stands for Map of Content, and holds one file per
topic named <Topic Name> - MOC. Permanent Notes holds everything else. Every
time I create a note related to a topic, I link it in both directions:
[[<Permanent note name>]] in the MOC, and [[<Topic Name> - MOC]] in the
note.
The following files are examples:
vault/
├── MOC/
│ └── Legacy Payments API - MOC.md
└── Permanent Notes/
├── Payments API - Endpoints.md
├── Payments API - Webhook Retry Logic.md
├── Payments API - Settlement Flow.md
└── Payments API - Architecture Decisions.md
And the MOC itself stays deliberately thin:
# Legacy Payments API - MOC
Legacy service handling card settlement.
## Reference
- [[Payments API - Endpoints]]
- [[Payments API - Webhook Retry Logic]]
## Design
- [[Payments API - Settlement Flow]]
- [[Payments API - Architecture Decisions]]
This is the whole trick. Instead of pointing an agent at a folder and hoping it
reads the right things, you point it at one file that tells it exactly which
notes matter and how they relate. You control the context window instead of
letting the file system decide it for you.
Connecting your agent to the vault
There's no plugin or integration to set up here. Because Obsidian notes are just
markdown files on disk, any agent that can read your file system can read your
vault.
My workflow is simple: I open Claude at the vault root and tell it to read a
specific MOC file.
Read MOC/Legacy Payments API - MOC.md and the notes it links to.
Or paste the full path in directly if you'd rather not think about where you
launched from.
The reason to open at the root rather than inside MOC/ is that the links point
outward. Your MOC lives in one folder and every note it references lives in
another, so an agent scoped to MOC/ has to reach outside its working directory
to follow them. Depending on your setup that means approving access every time.
Using an agent with the MOC
When I start researching a topic, I create the MOC first and give the agent the
path to it.
On the legacy project, that meant creating Legacy Payments API - MOC, then
working through the codebase asking Claude to document the API endpoints, the
business logic, and the process flows — with each one landing as its own
permanent note and each one linked back to the MOC. I wrote my architecture
documents into the vault too, so I can reference them later instead of
reconstructing the reasoning from scratch.
Once the MOC has some substance, it becomes the entry point for everything else.
When I need a plan for a new feature, the prompt is roughly:
Read
MOC/Legacy Payments API - MOC.mdand every note it links to. Then write
an implementation plan for adding partial refunds to the settlement flow. Flag
anything in the existing notes that contradicts the change.
Tips to work efficiently
Two things went wrong for me before this settled into something useful.
Agents write far too much. Ask for documentation on a service and you'll get
a small book. It becomes too dense for a human to actually read. The more text
the agent has to go through, the more likely it is to hallucinate something that
isn't in there.
The fix is the most important habit when working with AI agents: proofread what
the agent wrote before you save it. It's tempting to trust Claude to write notes
and then never look at them, but a proofreading pass lets you cut the sections
you'll never need. Every paragraph you delete now is context the agent doesn't
have to process later.
Notes drift out of sync. New information surfaces in conversation and never
makes it into the vault, so the next time you read the note it's wrong. Keeping
notes short is what makes them maintainable. If you can scan the section headers
of a note in ten seconds, you'll actually update it. Long notes are far less
likely to get updated.
What doesn't belong in the vault
The instinct when an agent is doing the writing is to let it document
everything, because it's free. But every line it writes is a line you have to
proofread and a line it has to read on every future run.
The thing to cut first is code detail. You don't need a note listing every
parameter on every method, or a walkthrough of what each function does line by
line. That information is already documented by the code itself.
Keep the vault at the level the code can't tell you. Why the retry logic backs
off the way it does. What the endpoints are actually doing at a high level. The
reasoning behind an architecture decision nobody wrote down at the time. That's
the stuff you can't reconstruct from source.
Two more things I've learned to leave out.
The first is the agent's own reasoning. When Claude works through a problem it'll
often narrate how it got there, what it ruled out, what it checked, and why it
landed where it did. That's useful to read in the moment, but it becomes noise
in a document.
The second is anything that has an authoritative source somewhere else — framework
docs, library references, the ticket describing the requirement, the Slack thread
where a decision got made. Copying those into the vault creates a second copy
that starts going stale immediately. Link to them instead.
The main idea is to keep your notes concise and at a high level to stop the AI
agent from hallucinating.
A decent test: if the information already lives somewhere authoritative — the
repo, the ticket, the docs — you don't need to duplicate it. Write down the part
that only exists in your head.
Summary
Documentation is hard to write and harder to keep current, and on a legacy
project with no maintainers that gap is where all your time goes. Pairing an
agent with Obsidian doesn't remove the work. You still proofread and keep things
in sync. What it changes is the kind of work. Instead of scanning your notes to
find information, you're scanning them to verify it, and that's a much
simpler job.
Let me know how it works for you.
Top comments (27)
I typically use memory files locally instead of Obsidian—that I leave for my hand-written notes. But one thing I've found to really help cut what Claude outputs is prompting it to "write for AI, not human readers." Then Claude can get to the point without the extra long prose. I'm curious if it would be too short for your Obsidian notes, but it might be worth a try. Thanks for the writeup!
Hi Ashley, thank you for your comment. That's a good tip. I feel like I'm constantly asking claude to be more concise.
It might be a good idea to put this in my claude.md file in the root directory of my vault as well, so I don't need to put it in my prompt every time. I'll give this a try, thank you!
Have a look at Qoder's Generate Wikis system. It basically runs an agent in the background to keep your documentation up to date. Both the human readable documentation and the 'knowledge cards' and memories, used for keeping the agents on track and prevent drift. Imo, it's rock solid, my 1 agent has been running for well over a week now, over 400k LOC produced and it hasnt drifted an inch, it still adheres to everything I told it on day 1 and day 5. Alibaba really did something incredible with that feature, I havent seen anything hold a candle to it in terms of long term reliability for agentic memory.
This is a fantastic approach and it makes sense. What’s important is you are structured for your use case. I am also using obsidian as a 2nd brain for 6 months and I have restructured it a few times. I have areas my career, personal, hobbies etc. I have finally settled on a hopper of projects, articles to read or write and a top level list of things I will do in next 6 months which then links to career, hobby and so on. I have finally brought it down to where I can connect Claude (at work) or opencode (at home) to it and then work on things or update.
My big learning was as it’s a brain, don’t hesitate to look at what’s not working and if necessary, use ai or automation to reorganize as it works for you. I have done 2-3 major reorganization so far.
All the best in your journey! Hope you get the most out of the 2 brains :) now
Hi Debashish, thank you for your comment. I like your point of going back and seeing what's working and not working. It's a continuous process to keep claude productive, especially with new models being released.
I'll have to try to extend claude with my personal work as well. That's great to hear it has worked so well. What prompted you reorganize, was claude hitting a limit with the notes, or something else?
I got into 2nd brain, LLM Wiki and all that as these were hot topics. My 2nd brain use case expanded. No, I didn’t hit Claude usage limits. As I added more domains of career, personal and hobbbies I found what i started with does not work anymore. My 2nd brain has things in 4 broad buckets - things I have done, learning, artifacts and then things I am doing and its associated stuff, things i will do in near future of 6 months planned out, and things i will explore.
I have automation and agents are mostly around things to explore which mine internet for areas of interest from keywords or topics.
This is working like a machine for now :) Hope this helps. So each of my domains have their own such pipelines. I have to invest time every couple of weeks to prune things, prioritize, move things out or bring things in. I invest time in preparing planned future items very well with certain intent. I have a dashboard which gives me a view of where I am investing time and try to strike some balance. For example in AI earlier it was about LLMs mostly, now it’s agentic and agentic has several sub areas. You may see that trend in my posts. Anyway, it’s a journey :)
The 4 buckets you have are items that I would like to store more of myself. I like that it focuses on the past and the future with things you have done and will do in the near future.
It is an investment to get everything set up and continuously improve on the process, but it's worth it at the end to reach our goals. There's a misconception that we can give AI agents any task, and it will do it accurately each time. Like you said, it's an investment and we need to have intention.
It's impressive how far AI has come. I remember when it was a big deal that we could ask ChatGPT a question or write responses to emails. Now, we are automating our workflows with AI agents without human intervention. I'm excited to see what's next.
Thank you for your comments and sharing your setup.
AI has come a long way. My experience- first time vault setup and second reorganization I did with no written plan. I was promoting Claude. 3rd time I wrote up what I wanted and had Claude setup and it stored that file map in vault. I have tags in place so it’s easier to reorganize by just changing the map. In addition, I have specific area of vault in agent and Claude.md (it’s a symbolic link to agent.md) to know what’s where. This is where earlier I was burning tokens as it would parse the whole vault and it’s grown quite a bit. Consider adding context in vault to help your AI to know what’s where and where to look when you ask. For example I ask Ai to update daily journals, update project status, update plans and metrics - so whatever you use most, add in context Md to tell Ai where it is. It can locate that faster instead of reading all files. This will be cheaper going forward.
Have you tried Qoder yet? The Generate Wikis system they built is probably what you're trying to recreate with this workflow, though they run it via a separate lite model as your main thread runs, it generates the codebase documentation, knowledge cards (flash cards for the LLM) and memories, all of which is kept up to date as you run, which keeps your system fully documented and aligned at all times, without the overhead of making your main model (expensive) do it, which also dilutes it's context.
Hi UnitBuilds, thank you for your comment. I haven't tried Qoder, but that sounds like what I'm looking for. It's hard to keep documentation up to date as the code changes, so this may help me with that. I'll have to try it out, thank you for the recommendation!
A second brain for agents needs more than storage. It needs provenance, freshness, ownership, and a way to distinguish facts from summaries and preferences. Otherwise the agent can retrieve a note correctly and still apply it in the wrong context.
Hi Alex, thank you for your comment. I agree, taking ownership is the biggest part. It's important to double check that the AI agent is getting the information and applying it correctly. It's very easy to let the AI agent run and not oversee what it's doing.
Exactly. The oversight loop is the part that makes the second brain useful instead of just convenient. I like systems that can show what evidence they used, what they ignored, and where the agent is making an inference rather than repeating a stored fact.
Yes. The dangerous mode is when the agent appears to be using the second brain correctly, so nobody checks the source path. I like making provenance visible in the workflow: what note was used, when it was last updated, and what decision it influenced.
"Every paragraph you delete now is context the agent doesn't have to process later" is the whole argument in one line, and it holds up even outside note-taking. I ran a paired experiment recently comparing a lean, intent-filtered context call against a maximal one that pulled everything (source + symbols + git + memory) for an AI coding agent — the maximal version cost ~5x more tokens for statistically the same recall. More context wasn't more correct, it was just more expensive to be equally right.
The "notes drift out of sync" point maps onto something I keep running into on the retrieval side too: a stale or shadowed source can produce an answer that looks exactly as confident as a correct one. Same failure shape as what alexshev is pointing at below (provenance/freshness) — whether it's a markdown note or a symbol lookup, the agent has no way to tell "this is current" from "this used to be true" unless something upstream flags it.
Good discipline either way: proofread before it compounds, and keep the source of truth in one place instead of a copy that can quietly go stale.
Hi Mikhail, thank you for your comment. Using 5x more tokens is a big deal, especially since the cost of token usage is going up. We’ll have to find more ways to try to decrease our token usage to make up for the cost.
I agree with the AI agent sounding very confident on the wrong answer. I have to be careful to update my old notes because if I have contradicting information in different files, it may pull from the incorrect spot.
Yeah, that's the exact failure mode — contradicting info in different files is basically the same shape as stale cache, just manual instead of automatic. One cheap habit that's helped me: whenever I update a fact that's referenced in multiple notes, grep for the old value across the vault before moving on, rather than trusting I'll remember every place it's mentioned.
That's a great tip. Using grep to check for the old values is a smart way to update your old notes. Especially for notes that I've written months ago where I don't remember exactly where the files are. Thank you for the tip. I'll have to incorporate it into my next session.
The part about notes drifting out of sync is probably the hardest problem here.
A MOC gives the agent a much better starting point than pointing it at an entire folder, but it still seems to depend on someone noticing when the underlying project has changed and updating the relevant notes.
I'm wondering if the next step is making the knowledge itself change-aware: when a code change, ADR, ticket, or new conversation contradicts an existing note, the system should be able to surface that rather than silently keeping both versions.
Otherwise, you can end up with a very well-organized second brain that's confidently preserving yesterday's understanding.
Do you think that kind of automatic drift detection is realistic, or would you still prefer keeping the update process deliberately human-controlled?
I think automatic drift detection is realistic, but I wouldn't make the system automatically rewrite the knowledge.
I'd separate detection from validation:
code / ADR / ticket / conversation changes
→ detect a possible contradiction
→ mark the note as potentially stale
→ show the evidence and what changed
→ human verifies it
→ only then update the knowledge.
That seems safer than either fully manual maintenance or letting the agent silently rewrite its own memory.
We're actually exploring a similar problem with AI agents in our codebase intelligence work. We keep an engineering diary where claims can have an explicit lifecycle such as
FIXED → VERIFIED → REFUTED. For example, "tests passed" can initially be marked VERIFIED, but later we may discover they were testing the wrong target. The test output itself was valid, but the conclusion "the bug is fixed" became REFUTED.That distinction seems important for knowledge systems too: provenance can prove that something happened, but it doesn't necessarily prove that the conclusion drawn from it is still valid.
The same idea applies to code retrieval. A source shouldn't just be "retrieved"; the agent should have some signal about whether it's current, where it came from, and what changed since it was written.
So maybe the next step isn't just a smarter MOC, but a change-aware knowledge layer with provenance and freshness.
The interesting part is that the agent wouldn't need to perfectly understand whether a note is correct. It could simply say: "These two sources disagree, and this one appears newer." That alone could prevent a lot of confident wrong answers.
I think that's the safer distinction. Detecting a contradiction is something the system can do continuously, but deciding that the underlying knowledge should change is a much higher-trust operation.
I especially like the idea of treating freshness and provenance as signals rather than assuming that having a source automatically makes the conclusion correct. If the system can surface “these sources disagree, and this one is newer” without pretending to resolve the disagreement itself, that already seems like a huge improvement.
That feels like a much more practical direction than trying to make the agent perfectly understand whether its own memory is correct.
Hi Suraj and Mikhail, thank you for your comments. This is a great discussion. Mikhail said it best with
The dangerous part about using AI agents is that it assumes information to fill in the gaps and it seems so confident. If you're not verifying that the conclusion is correct, it's going to build on something that's incorrect.
The AI agents can identify the drift and point it out, but it's always best to verify the information.
We've seen this become an important consideration in AI workflows at IT Path Solutions, giving an agent more context doesn't necessarily make it more accurate. The quality, freshness, and relevance of that context matter just as much. Keeping a clear source of truth can prevent an agent from confidently acting on information that was correct months ago but isn't anymore.
Hi Glen, thank you for your comment. I agree, it's important to keep one clear source of truth, whether that's in Obsidian or any other platform. Conflicting information in multiple files can make the AI Agent build on top of inaccurate information.
Pointing the agent at a thin map of content instead of the whole vault is the part most people skip. Dumping every note into context just burns tokens and scrambles priority. I have had better runs when the agent gets one entry file, a short list of linked notes, and a hard stop when the map does not cover the question. Context is a budget. The graph is how you spend it on purpose instead of hoping the model finds the right page.
the 'hand an agent a single entry point' framing is exactly right. naive 'dump your notes as context' approaches burn tokens on knowledge the agent doesn't need for the current task.
the MOC as a starting point, with the agent following links on demand, is closer to briefing a human engineer than any RAG pipeline i've tried. the graph traversal does the retrieval, and for personal documentation the precision is usually better.
the tricky part: how does your agent decide when to stop following links? easy to end up reading half the vault for a simple question.
i like claudian in obsidian