Empirically re-confirmed on 0.2.27: unique digests + 1 attestation each + `gh attestation verify` exit 0, yet Obsidian's review still errors 'signature invalid'. It is an Obsidian-side verifier issue. A missing attestation is a non-blocking Recommendation, so ship without one. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .github/workflows | ||
| companion | ||
| dev | ||
| docs | ||
| src | ||
| test | ||
| .gitignore | ||
| CHANGELOG.md | ||
| esbuild.config.mjs | ||
| eslint.config.mjs | ||
| LICENSE | ||
| manifest.json | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| styles.css | ||
| tsconfig.json | ||
| version-bump.mjs | ||
| versions.json | ||
Local AI for your vault
Chat with your vault, fully local. An Obsidian plugin that runs AI entirely on your machine: semantic search, cited answers, missing-link suggestions, inline writing commands, OCR over your images, and an optional model fine-tuned on your own notes. Nothing leaves your computer.
It runs entirely on your machine, and can even fine-tune a small model on your vault so the assistant learns your knowledge and your writing style. Your notes never become someone else's training data.
A single panel with four tabs: Chat . AI Search . Connect . Train.
Features
| Chat | Ask questions, get answers grounded in your notes with clickable citations. |
| AI Search | Find notes by meaning, not keywords (Obsidian's built-in search is keyword-only). |
| Connect | Finds notes that belong together but are not linked yet, lets an LLM judge which deserve a real link, and writes the [[wikilink]] for you (per-note while you read, or a whole-vault scan). Turns a pile of notes into a graph. |
| Train (optional) | Fine-tune a small model on your notes so chat answers from memory and in your voice. Runs on your machine; the plugin is fully usable without it. |
Plus: inline writing commands (summarize / rewrite / fix grammar / expand, with review-before-apply) and opt-in OCR so the text inside your screenshots becomes searchable.
How it works (like Ollama)
This plugin is a thin client. The AI runs in a separate QVAC companion process on your computer, and the plugin talks to it over 127.0.0.1 (localhost) only. Same shape as plugins that use a local Ollama server.
Disclosures (please read):
- A local companion is required. Install and run the QVAC companion; the plugin connects to it. Without it, the plugin shows a "companion not running" state and does nothing. See Install the companion.
- Everything is local. No vault content, no queries, and no telemetry are ever sent to any server. The only network use is the companion's one-time model download on first run (about 4.5 GB: a chat model plus an embeddings model), fetched from the QVAC model registry. You can point it at models you already have to download less, or nothing.
- Files outside the vault. The plugin reads a small auth token the companion writes at
~/.qvac-obsidian/so it can connect securely to the local server. The companion stores its index and models under~/.qvac-obsidian/and~/.qvac/. - Desktop only. The plugin uses Node/Electron APIs, so it will not load on Obsidian mobile. The companion runs on any desktop OS with Node 20+ (macOS, Windows, Linux).
- No self-update. The plugin never downloads or runs code on its own. You install and update the companion yourself.
- To stop it: quit the QVAC companion. The plugin then simply reports it is offline.
Install
- Install the plugin from Community plugins in Obsidian (search "Local AI for your vault").
- Install and run the QVAC companion (below).
- Open the QVAC panel (ribbon icon or the command palette: "Open chat"). The first time, a Setup panel downloads the models (or lets you pick local models you already have), all on your machine.
Install the companion
The companion is a small local daemon that runs @qvac/sdk (Apache-2.0), the local AI engine from Tether's QVAC. One daemon serves all your vaults. Its source is in companion/.
Run it (any desktop OS with Node 20+):
npx qvac-obsidian-companion
That starts the daemon and writes its connection token to ~/.qvac-obsidian/; the plugin connects automatically. Leave it running while you use Obsidian; quit it (Ctrl+C) to go offline.
Prefer a global install, or running from source:
npm install -g qvac-obsidian-companion && qvac-obsidian-companion # global
cd companion && npm install && node server.js # from a clone of this repo
Commands
- Open chat / Open semantic search / Open Connect (find missing links) / Train a model on your vault
- Index vault (incremental) / Reindex vault (full) / Color graph by folder
- Summarize selection / Rewrite selection (clearer) / Fix grammar in selection / Expand selection (also in the editor right-click menu)
Privacy
100% local. No vault content, queries, or telemetry are sent anywhere. Open source, no obfuscation, no analytics, no account. Your notes are yours. The whole point of this plugin is that your second brain never becomes someone else's training data.
Development
The plugin source is at the repo root (src/, manifest.json, styles.css); the companion is in companion/; dev helpers and demo vaults are in dev/.
npm install && npm run build # builds main.js
npm test # plugin unit tests
./dev/run-dev.sh "/path/to/Vault" # build + install into a vault + start the companion
License
MIT (plugin). The companion depends on @qvac/sdk (Apache-2.0).