README file from
GithubFrom questions to signals
Chat is useful when you know what to ask. Vault Radar adds another loop: it turns recently changed notes into a small, cited brief you can inspect without composing a prompt. It can surface:
- a commitment that is about to slip;
- a project blocked by an unresolved decision;
- a connection that only appears across two notes;
- the next action supported by the source material.
That is Vault Radar. Every card cites the exact Markdown notes behind it. Open the evidence, map it on an editable Canvas, continue with those sources in chat, mark the insight Helpful or Wrong, snooze it, or dismiss it. Radar never edits notes, and automatic runs are off until you explicitly enable them.
What you can do
| Capability | Built for |
|---|---|
| Vault Radar | Turn changed notes into a small, cited brief of commitments, stalled work, connections, and next actions. |
| Insight Canvas | Turn an existing Radar card into a local, editable evidence map without another model request. |
| Chat with notes | Ask grounded questions across the vault or pin the current note, a folder, tags, or selected notes. |
| Related Notes | Keep semantically relevant notes visible while you write, with direct source opening and scoped chat. |
| Text actions | Summarize, rewrite, extract tasks, apply a custom instruction, or run saved prompts from the command palette. |
| Review workflows | Draft weekly reviews, meeting tasks, and project updates from indexed context. Every write still requires approval. |
| Bring your own model | Use Ollama, LM Studio, vLLM, LocalAI, OpenAI, or another server with OpenAI-compatible endpoints. |
How it works
Local LLM Helper runs inside Obsidian. It sends only the context needed for the feature you invoke, then keeps its semantic index and plugin state locally in your vault.
flowchart LR
subgraph Device["Your device"]
V["Markdown vault"] --> P["Local LLM Helper"]
P --> R["Radar excerpts + direct prompts"]
P --> N["Note chunks"]
P --> T["Question, active note, or selection"]
X["Local vector index"] --> S["Local similarity search"]
Y["Query vector"] --> S
S --> Q["Scoped prompt + retrieved context"]
O["Cited answers, cards, and drafts"] --> U["Open sources or approve writes"]
end
subgraph Endpoints["Endpoints you configure"]
C["Chat endpoint"]
E["Embedding endpoint"]
end
R --> C
Q --> C
N -->|index| E
E -->|document vectors| X
T -->|retrieve| E
E -->|query vector| Y
C --> O
There is no Local LLM Helper cloud service: requests go only to chat and embedding endpoints you configure, plus a search provider you explicitly select when you run web search.
Vault Radar: from signal to evidence
Radar reads a bounded set of recently changed Markdown notes and asks your configured chat model for high-signal, source-grounded cards.
flowchart LR
A["Changed Markdown notes"] --> B["Bounded excerpts"]
B --> C["Configured chat endpoint"]
C --> D["Grounded cards<br/>with source IDs"]
D --> E["Open exact sources"]
D --> F["Chat with those sources"]
D --> H["Map as an editable Canvas"]
D --> G["Helpful / Wrong<br/>Snooze / Dismiss"]
After the first successful scan, Radar is incremental: unchanged notes are not repeatedly sent. A resilient local state file remembers scan versions, citations, feedback, snoozes, and dismissals. Large-vault state and prompt size are both bounded.
Insight Canvas
Choose Map it on a Radar card to review its destination and available evidence, then confirm creation of a local Obsidian .canvas file under Vault Radar Maps/. The card's insight and any next action sit at the center. Available cited notes appear as clickable file nodes around it; missing sources are skipped. Evidence edges connect those notes to the insight. Source notes are never changed, existing files are never overwritten, and the plugin makes no additional model or API request. Obsidian may load external embeds when it renders cited notes.
Quick start with Ollama
1. Install and run models
ollama pull gemma3
ollama serve
For semantic search, Related Notes, and RAG chat, also install an embedding model:
ollama pull nomic-embed-text
2. Connect the plugin
Open Settings → Local LLM Helper and set:
| Setting | Value |
|---|---|
| Provider | Ollama |
| Chat/default server URL | http://localhost:11434 |
| Chat model | gemma3 |
| Embedding model | nomic-embed-text |
3. Try the core loop
- Open the command palette with
Cmd/Ctrl + P. - Run Vault Radar: Open.
- Click Run now.
- Open a cited note or choose Chat with sources.
Radar does not require an embedding index. To use RAG chat and Related Notes, run Notes: Index notes for RAG once after configuring the embedding model.
Model and endpoint compatibility
The plugin uses the OpenAI-compatible API format rather than a provider-specific SDK.
| Operation | Endpoint | Used by |
|---|---|---|
| Chat completion | /v1/chat/completions |
Vault Radar, chat, text actions, tagging, RAG answers, workflows |
| Embeddings | /v1/embeddings |
Notes index, semantic retrieval, Related Notes |
| Model discovery | /v1/models |
Chat and embedding model pickers |
Chat and embeddings may use different server URLs and API keys. This is useful when, for example, a local Ollama instance handles chat while a separate OpenAI-compatible service handles embeddings.
Ollama has been smoke-tested end to end. The shared OpenAI-compatible request contract, JSON-mode fallback, timeouts, retries, response validation, and user-facing errors are unit-tested through injected transports and centralized in one client.
What leaves your vault
Local LLM Helper has no telemetry and no hosted backend of its own. Data goes only to endpoints you configure or features you invoke.
| Feature | Data sent | When |
|---|---|---|
| Vault Radar | Bounded excerpts from changed Markdown notes; when feedback exists, kind/title metadata for up to six Helpful and six Wrong cards | Manual run, or daily after explicit opt-in |
| Insight Canvas | The plugin sends no data to model or API endpoints; Obsidian may load external embeds referenced by cited notes | Canvas creation requires Create and open confirmation; embeds may load whenever Obsidian renders the Canvas |
| Chat and text actions | Your prompt, selection, active-note context, or chosen note scope | When you submit a request |
| RAG indexing | Note chunks and supported attachment text | When indexing runs |
| RAG and Related Notes retrieval | Your question, active-note text, or selected text | When semantic retrieval queries the embedding endpoint |
| Web search | Your query goes to the selected search provider; the query and returned titles/snippets then go to your configured chat endpoint for synthesis | Only when you run web search |
Endpoints can be local or remote. A local URL does not automatically make a remote model private, and a remote URL can send note content off-device. Review Privacy and Capabilities before enabling background features.
Safety defaults:
- automatic Vault Radar runs are off;
- automatic indexing is off;
- Vault Radar never writes to notes;
- workflow and Vault Action writes require explicit approval;
- API keys, settings, indexes, and Radar state are stored locally in the vault's plugin data.
More workflows
Scoped notes chat
Choose the context before asking:
- entire vault;
- current note or folder;
- one or more tags;
- selected Related Notes;
- the exact sources from a Vault Radar card.
Answers include clickable source references. Markdown rendering is optional and can be toggled in the sidebar.
Review workflows
Built-in recipes cover:
- Weekly review — wins, open loops, and next actions;
- Meeting notes to tasks — owners, commitments, and follow-ups;
- Project status summary — progress, risks, blockers, and next steps.
Generated note changes appear as approval cards. Nothing is written until you approve it.
Commands and saved prompts
Use the command palette or ribbon menu for fast transformations:
- Text: Summarize, Make professional, Generate action items, Use as prompt;
- Prompt: run any saved prompt and assign it a hotkey;
- Chat: general chat, notes chat, current note, current folder;
- Notes: index, diagnostics, Related Notes;
- Workflow: run an approval-gated recipe;
- Web: search using Tavily, Brave, or self-hosted SearXNG.
Install
Obsidian Community Plugins
- Open Settings → Community plugins → Browse.
- Search for Local LLM Helper.
- Select Install, then Enable.
You can also open the plugin listing.
Manual installation
- Download
main.js,manifest.json, andstyles.cssfrom the latest release. - Place them in
<vault>/.obsidian/plugins/local-llm-helper/. - Reload Obsidian and enable Local LLM Helper under Community plugins.
Development
Requirements: Node.js 20 or later.
git clone https://github.com/manimohans/obsidian-local-llm-helper.git
cd obsidian-local-llm-helper
npm ci
npm run check
npm run check runs the Vitest suite, TypeScript validation, and the production bundle. See CONTRIBUTING.md for local-vault setup and contribution guidelines.
Project links
- Releases — version history and downloadable assets
- Privacy and Capabilities — network, vault, clipboard, background, and storage behavior
- Issues — bug reports and feature requests
- Contributing — development workflow and release checks
License
MIT — use it, modify it, and build on it.