Prvoslav Savić350 downloadsFully-local, multimodal AI: voice memos, image OCR, whole-vault semantic chat, and AI writing — powered by Gemma 4 on Ollama. Nothing leaves your machine.
Fully-local, multimodal AI for Obsidian. Talk to your vault, snap images into notes, search across everything semantically, and write with AI — all powered by Gemma 4 on Ollama. No cloud. No API keys. Zero data leaves your machine.
Every AI feature runs against a local Ollama endpoint on
127.0.0.1. There is exactly one network call site in the entire codebase (src/core/ollama-provider.ts) and it only ever talks to your configured localhost endpoint. See Privacy & network audit.
Contents: Features · Requirements · Setup · Commands · Settings · Privacy · Development · License
- [ ] tasks, written to your daily note (or a new note). Serbian & English. Your original audio is never modified.A right-sidebar panel with three modes:
[[note]] citations (local nomic-embed-text, file-based index, auto-built & incremental).Answers render as Markdown with clickable [[links]], a copy button, and modern chat bubbles.
Name :: instruction actions in settings; they appear in the same submenu.[[ ]] (deterministic, no AI).gemma4:12b (multimodal — audio + vision + text) and, for vault search, nomic-embed-text.ollama serve, or open the app).ollama pull gemma4:12b
ollama pull nomic-embed-text # for whole-vault search
main.js, manifest.json, and styles.css into <your-vault>/.obsidian/plugins/vault-brain/, then enable Vault Brain under Settings → Community plugins.About the model:
gemma4:12bis the recommended build — it's fully multimodal (audio + vision + text), so voice, image OCR, and chat all run on one model. It needs Ollama 0.30.5+ (older versions return a412when pulling it). Want something lighter? The 8Bgemma4:latestis also fully multimodal and faster (just less capable) — pick it in Settings → Vault Brain → Model. Avoidgemma4:12b-mlx: that MLX build is text-only (no voice or vision).
Vault Brain can also talk to Ollama running on another machine you own — a home server or a DGX-class box — so a light laptop can use a heavy model:
http://192.168.x.y (keep the port). Recent
Ollama allows Obsidian's origin by default; if you hit a CORS error, start the server with
OLLAMA_ORIGINS="app://obsidian.md".https://your-host/ollama
(Open WebUI's Ollama proxy path; the port setting is ignored when the host has a path) and paste
an API key from Open WebUI → Settings → Account into the API token setting. The token is sent
as Authorization: Bearer … on every request.Privacy: pointing the plugin at a remote server sends your note content to that machine — only use hardware you trust. The token is stored unencrypted in
.obsidian/plugins/vault-brain/data.json. The single auditable network egress is unchanged.
Voice memo → note · Start/Stop voice recording · Process as meeting · Extract text from image · Open Q&A panel · Open related notes · Rebuild vault index · Selection: Summarize/Improve/Format/Translate/Fix grammar (+ your custom prompts) · Continue writing at cursor · Suggest tags for this note · Link mentions of existing notes · Test connection.
| Setting | Default | Notes |
|---|---|---|
| Ollama host / port | http://127.0.0.1 / 11434 |
Localhost only; non-local triggers a privacy warning |
| Model | gemma4:12b |
multimodal (audio + vision + text); pick any installed model from the dropdown |
| Embedding model | nomic-embed-text:latest |
for whole-vault search |
| Vault search results (top-K) | 6 | chunks retrieved per question |
| Daily-note mode | Append to today's note | or "new note per memo" |
| Output language | Auto | or force EN / SR |
| Context token cap | 8000 | hard cap for chat context |
| Microphone | System default | input device for recording |
| Auto-watch folder | (off) | auto-transcribe audio dropped here |
| Keep model warm | off | periodic ping to avoid cold starts |
| Output template | (editable) | {{date}} {{title}} {{summary}} {{tasks}} {{transcript}} |
| Custom prompts | (empty) | one per line: Name :: instruction |
Local-only by design. Verify it yourself:
src/core/ollama-provider.ts:grep -rln fetch src/ # → only src/core/ollama-provider.ts
lsof -i / a proxy, exercise every feature — the only connections are to 127.0.0.1:11434.npm install
npm run dev # esbuild watch → main.js
npm test # node:test unit + live Ollama contract tests (skip if offline)
npm run build # type-check + production bundle
Architecture: a thin, obsidian-free src/core/ (24 unit-tested modules — transport, context building, prompts, parsing, similarity, diff) behind an LlmProvider interface, with 9 feature orchestrators in src/features/. 87 tests. Design specs and build plans live in docs/.
MIT — see LICENSE.