Frank Lechtenberg165 downloadsChat with local Ollama AI models directly in Obsidian. Includes built-in DuckDuckGo web search – no API key, no cloud, no telemetry.
Deutsche Fassung: README.de.md
An Obsidian plugin that embeds local AI models via Ollama directly into Obsidian. Chat assistant with web search, vault integration, persistent context and daily-note workflow. Fully local, no cloud, no API cost, no data sharing.

Ctrl+Enter or the Local Query button)[1], [2] (Shift+Enter or the Web Search button){YYYY}/{MM}/{DD} placeholders is configurable. Creates file and folder if needed.As of version 2.9.0 two filesystem actions can be triggered directly from the chat view through natural-language phrases, without opening the save modal.
Create a folder
Recognises phrasings such as:
Archive/2026"04 Resources/Drafts"Raw data"02 Projects/Book"The path is interpreted relative to the vault root. Missing intermediate folders are created recursively. If the folder already exists the plugin reports that back as a notice and does not touch anything.
Save the chat or the last answer into a specific folder
Recognises phrasings such as:
04 Resources/Drafts"Checklist to folder 01 Inbox"02 Projects/Book"Setup notes in folder 04 Resources/Drafts"The target folder is created automatically if it does not exist yet. An optional filename can be passed with as …. Without a filename the plugin derives the title from the first few words of the first user prompt.
The word folder must appear in the prompt – without it the direct-save flow does not kick in and the save modal is shown instead.
Scope: full chat or last answer only
If the prompt contains a phrasing like "last answer", "last response", "the answer" or "the result", only the most recent question-and-answer pair is saved instead of the full history. In every other case the complete conversation is written.
Path validation
Every path is validated before any write. The following are rejected:
/). or ..)< > : " | ? * or control charactersAn invalid path produces an inline notice in the chat; nothing is written.
Conflict handling
If the target file already exists, the plugin shows an inline prompt in the chat with four options:
## Conversation onwards) to the existing file, separated by a horizontal rule. The target file's frontmatter is left untouched.2, 3, … in the same folder.The conflict prompt is not part of the saved chat and does not survive a restart.
Relation to the existing save flow
The Chat log header button and the generic phrases like "save that" still open the save modal with model suggestion, autocomplete and preview. The prompt-driven variants only kick in when a concrete folder is named in the prompt; otherwise the trigger logic falls back to the modal. All triggers share one toggle in Trigger phrases active.
German prompt phrases work equivalently. See README.de.md for the German examples.
Natural-language commands open the matching flow directly from the chat.
| Phrase | Action |
|---|---|
| "save that", "save this to vault", "save that as a note" | Save-chat modal |
| "save this to folder X", "put this in folder X" | Direct save (no modal) |
| "create folder X", "make a new folder X" | Create folder |
| "log this to my daily note", "add this to my daily note" | Daily-note flow |
| "save this as a daily note" | Daily-note flow |
| Any message containing "Daily Note" | Daily-note flow |
Toggle via the setting Trigger phrases active. German equivalents are documented in README.de.md.
00 Kontext, 01 Inbox, 02 Projekte, 03 Bereiche, 04 Ressourcen, 05 Daily Notes, 06 Archiv, 07 Anhänge. Alternative minimal template (just Inbox and Archive). Checkboxes per folder; existing folders are detected.00 Kontext is created, the plugin writes three starter templates into it: Biographie.md, Schreibstil.md, Recherchevorgaben.md.fileManager.renameFile, so wikilinks are updated automatically. Conflict dialog per case: merge, rename or skip.Every .md file in 00 Kontext/ is automatically passed as background context to the model on every chat request. Filenames become subheadings, frontmatter is stripped. Hard cap at 8000 characters (configurable). This way the AI knows you, your writing style and your research preferences in every session.
Messages and the loaded note context survive an Obsidian restart. The last chat is back as soon as you open the chat view (capped at the last 50 messages).
macOS / Linux:
curl -fsSL https://ollama.com/install.sh | sh
Windows: installer at ollama.com/download.
ollama pull gemma3:12b
Recommended models by hardware:
| Model | RAM | Strength |
|---|---|---|
gemma3:12b |
~8 GB | Best German output, low hallucination – recommended |
llama3.1:8b |
~5 GB | Very stable, broad use |
qwen2.5:7b |
~5 GB | Multilingual, structuring |
gemma3:4b |
~3 GB | For older or weaker hardware |
Note on model size: 7B and 8B models hallucinate more than 12B models. For reliable German output we recommend
gemma3:12bon systems with at least 16 GB RAM.
Ollama runs in the background after installation. Check with:
ollama list
Updates will then be delivered automatically by Obsidian.
https://github.com/Geolech/obsidian-local-ollamamain.js, manifest.json and styles.css into .obsidian/plugins/local-ollama-websearch/ inside your vault00 Kontext/00 Kontext/Biographie.md, Schreibstil.md, Recherchevorgaben.md – from that point on the AI knows you in every sessionThe plugin connects to http://localhost:11434 automatically – no further configuration needed.
| Action | Shortcut / button |
|---|---|
| Send a local query | Ctrl + Enter or Local Query |
| Start a web search | Shift + Enter or Web Search |
| Save the chat log to the vault | Chat log (header) |
| Daily-note entry | Daily Note (header) |
| Clear the chat | Clear (header) |
| Load a chat from a note | Load chat from active note (quick actions) |
All actions are also available as command palette entries.
{YYYY} / {MM} / {DD} placeholders, append-by-defaultSee CHANGELOG.md.
MIT – Frank Lechtenberg, TH OWL