tuguberk42 downloadsAn autonomous graph-aware AI assistant that chats with your notes, proposes edits safely, and creates intelligent mindmaps.
An AI-powered Obsidian plugin that treats your notes, links, and diagrams as a living knowledge graph.

Thought Agent is not a chatbot bolted onto your notes. It is an autonomous reasoning agent that navigates your vault like a researcher, searching semantically, traversing graph links, proposing safe edits, and generating visual diagrams, all without touching a single file until you approve.
"Think of it as a second brain for your second brain."
That's it — no BRAT, no manual file copying.
You can also open the plugin page directly: community.obsidian.md/plugins/thought-agent
BRAT lets you install plugins directly from GitHub and get pre-release updates.
https://github.com/Tuguberk/Thought-Agent-Obsidian
main.jsmanifest.jsonstyles.css<your-vault>/.obsidian/plugins/thought-agent/
# Clone into your vault's plugins folder
git clone https://github.com/Tuguberk/Thought-Agent-Obsidian \
"<your-vault>/.obsidian/plugins/thought-agent"
cd "<your-vault>/.obsidian/plugins/thought-agent"
npm install
npm run build
Then enable the plugin in Obsidian as above.
Open Obsidian → Settings → Thought Agent and pick your LLM provider:
Using Anthropic (Claude):
Anthropicsk-ant-...)Using a local model (OpenAI compatible API):
OpenAI compatible APIhttp://localhost:1234/v1, hit Test to confirm it's reachableIn Settings → Thought Agent, click Re-index vault.
This builds the local semantic index (~25 MB model download on first run). You only need to do this once, and again after adding many new notes.
Click the 🧠 Thought Agent icon in the left sidebar (or run "Open Thought Agent chat" from the Command Palette).

Example prompts to try:
"What do my notes say about machine learning?"
"Summarize my research on [[Attention Mechanisms]] and link related notes"
"Create a mindmap of my project ideas"
"Find notes I haven't linked yet about distributed systems"
"What are the backlinks to my MOC note?"
The agent will never write to your vault without showing you a preview first.
Every proposed note creation, edit, and diagram goes through a diff view, approve or reject each change individually.
Attach images and PDFs directly to your messages using the + button in the chat composer.
flowchart TD
U(["👤 User Prompt"]) --> AL["🔄 Agent Loop\nIterative reasoning"]
AL --> TE["⚙️ Tool Executor"]
TE --> R["🔍 Hybrid Retrieval\nVector · BM25 · Graph"]
TE --> V["📝 Vault Operations\nCreate · Edit · Link"]
TE --> D["🎨 Excalidraw Engine\nCreate · Update · Read"]
TE --> G["🕸️ Graph Queries\nNeighbors · Backlinks · Subgraphs"]
R --> CP["📦 Context Pack\nRanked, deduplicated"]
CP --> AL
AL --> PR["👁️ Preview & Diff\nPropose before write"]
PR --> W(["✅ Write to Vault\nUser-approved only"])
style U fill:#7c3aed,color:#fff,stroke:none
style W fill:#059669,color:#fff,stroke:none
style PR fill:#d97706,color:#fff,stroke:none
style CP fill:#1e40af,color:#fff,stroke:none
Thought Agent is provider-agnostic. Choose the model that fits your workflow.
flowchart LR
TA["🧠 Thought Agent\nProvider Layer"] --> AN
TA --> LM
TA --> OA
subgraph AN["☁️ Anthropic (Cloud)"]
C1["Claude Sonnet 4.6\n✦ Recommended"]
C2["Claude Opus 4.7\n✦ Most powerful"]
C3["Claude Haiku 4.5\n✦ Fastest"]
end
subgraph LM["🖥️ OpenAI Compatible API (Local)"]
L1["LM Studio · Ollama · llama.cpp\nQwen · Mistral · Llama · Phi\nAny OpenAI-compat model"]
end
subgraph OA["🔗 OpenAI-Compatible (Remote)"]
O1["Any server exposing\n/v1/chat/completions"]
end
style TA fill:#7c3aed,color:#fff,stroke:none
style AN fill:#1a1a2e,color:#e2e8f0,stroke:#7c3aed,stroke-width:1px
style LM fill:#1a1a2e,color:#e2e8f0,stroke:#059669,stroke-width:1px
style OA fill:#1a1a2e,color:#e2e8f0,stroke:#3178c6,stroke-width:1px
| Provider | Setup | Privacy | Models | Best For |
|---|---|---|---|---|
| Anthropic | API key | Cloud | Claude Sonnet / Opus / Haiku | Best reasoning quality |
| OpenAI compatible API | localhost:1234 |
100% local | LM Studio · Ollama · llama.cpp | Offline / private vaults |
Every query runs through a multi-stage hybrid search before the agent sees any context.
flowchart LR
Q["🔎 Query"] --> V["Vector Search\n(all-MiniLM-L6-v2)\nSemantic similarity"]
Q --> B["BM25 Scoring\nKeyword frequency\n& TF-IDF"]
V --> F["🔀 Fusion\nMin-max normalize + weighted merge\n(0.7 semantic + 0.3 BM25)"]
B --> F
F --> GR["🕸️ Graph Re-ranking\nBoost linked neighbors\nof top results"]
GR --> MM["📊 MMR Filtering\nMaximal Marginal\nRelevance, diversity"]
MM --> CTX["📦 Context Pack\nTop-K unique chunks\nwith note metadata"]
style Q fill:#7c3aed,color:#fff,stroke:none
style CTX fill:#059669,color:#fff,stroke:none
"Nothing touches your vault without your eyes on it first."
sequenceDiagram
actor User
participant Agent
participant Preview
participant Vault
User->>Agent: "Summarize my research and link related notes"
Agent->>Agent: Search + reason (tool loop)
Agent->>Preview: Propose changes (diff view)
Preview-->>User: Show before/after for each change
User->>Preview: Approve ✅ / Reject ❌ per item
Preview->>Vault: Write only approved changes
Vault-->>User: Notes updated safely
Generate, update, and search visual diagrams, directly from natural language.

flowchart TD
NL(["💬 'Create a mindmap\nof my ML notes'"]) --> EA["Excalidraw\nAgent Tools"]
EA --> T1["📐 create_diagram\nmindmap · flowchart\ntimeline · entity-graph"]
EA --> T2["✏️ update_diagram\nAdd nodes · edges\nUpdate labels"]
EA --> T3["🔍 search_diagrams\nSemantic index\nover .excalidraw files"]
EA --> T4["📖 read_diagram\nExtract nodes, edges\n& text content"]
EA --> T5["🔗 annotate_diagram\nBidirectional link\nnote ↔ diagram"]
T1 --> LE["🏗️ Layout Engine\nDeterministic placement\nAnchor-aware arrows\nLayer ordering"]
T2 --> LE
LE --> PR["👁️ Preview\n→ User Approval"]
PR --> OUT(["📄 .excalidraw file\nwritten to vault"])
style NL fill:#7c3aed,color:#fff,stroke:none
style OUT fill:#059669,color:#fff,stroke:none
style LE fill:#d97706,color:#fff,stroke:none
Supported diagram types:
| Type | Description | Use case |
|---|---|---|
mindmap |
Hierarchical radial tree | Brainstorming, concept maps |
flowchart |
Process with decision nodes | Algorithms, workflows |
timeline |
Chronological node chain | History, project planning |
entity-graph |
Relationship network | Knowledge graphs, ERDs |
The agent has 14 tools across two categories:
| Tool | Description |
|---|---|
search_notes |
Hybrid semantic + keyword search over the entire vault |
get_note |
Fetch full content of any note by path |
get_neighbors |
Walk outgoing/incoming links to depth N |
get_backlinks |
Find all notes pointing to a target note |
query_graph |
Filter & visualize a subgraph (opens visual graph view) — see below |
create_note |
Propose a new note (preview → approval) |
edit_note |
Propose changes to an existing note (diff preview) |
link_notes |
Add a wikilink between two notes (preview → approval) |
reorganize |
Multi-step vault restructuring with per-step approval |
set_session_constraint |
Scope agent to specific tags/folders for the session |

| Tool | Description |
|---|---|
create_diagram |
Generate new .excalidraw from semantic node/edge structure |
update_diagram |
Add nodes/edges or relabel existing diagram |
search_diagrams |
Semantic search over the diagram index |
read_diagram |
Extract structured content from any .excalidraw file |
annotate_diagram |
Bidirectionally link a note and a diagram |
# 1. Clone into your vault's plugins folder
git clone https://github.com/Tuguberk/Thought-Agent-Obsidian \
/path/to/vault/.obsidian/plugins/thought-agent
# 2. Install dependencies
cd thought-agent && npm install
# 3. Start the dev build (watches for changes)
npm run dev
# 4. Enable "Thought Agent" in Obsidian → Settings → Community Plugins
npm run build
MIT © Tuğberk Akbulut
Built with ❤️ for people who think in graphs.