Sebastian Hanke3k downloadsReal AI agent for your vault. Coworker, Copilot & thinking partner, that maintains your memory & knowledge, adapts to your workflows, uses plugins, skills & tools with full safety controls. BYOK & MCP
Agentic AI for Obsidian.
An autonomous AI operating layer for your Obsidian vault. 60+ tools, semantic search, persistent memory, multi-agent workflows, office document creation, plugin discovery, and full safety controls. Works with 12+ providers including local models. Unifies chat history from ChatGPT, Claude, and Perplexity into your vault. Open source. Free.
pssah4.github.io/vault-operator
You describe a task in natural language. Vault Operator plans, searches your vault, reads relevant notes, creates or edits content, generates PowerPoint / Word / Excel files, browses the web, calls MCP servers, and reports back. Every step is visible in the sidebar in real time. Every write operation requires your approval and creates a checkpoint you can undo with one click.
Concrete examples:
The agent works with one model for chat and (optionally) a cheaper helper model for internal tasks like context condensing, which keeps cost predictable. A sidebar footer shows real-time token usage and cost in EUR per task.
Organized into nine groups:
read_file, read_document, list_files, search_files, semantic_search, search_historyget_frontmatter, search_by_tag, get_linked_notes, get_vault_stats, get_daily_note, query_base, open_note, vault_health_checkwrite_file, edit_file, append_to_file, update_frontmatter, create_folder, delete_file, move_file, generate_canvas, create_excalidraw, create_drawio, create_base, update_baseplan_presentation, create_pptx, create_docx, create_xlsxingest_document, ingest_triage, ingest_deepweb_fetch, web_search (Brave / Tavily), anti_echo_searchrecall_memory, mark_for_memory, update_soul, mark_note_as_memory_source, unmark_note_as_memory_source, list_memory_source_notes, list_pinned_conversationsnew_task, update_todo_list, ask_followup_question, attempt_completion, evaluate_expression, manage_skill, manage_source, switch_mode, find_tool, read_skill, read_agent_logs, configure_model, update_settings, inspect_self, manage_mcp_serverexecute_command, call_plugin_api, enable_plugin, resolve_capability_gap, execute_recipeuse_mcp_tool, read_mcp_tool (connect any MCP server)Local vector index (SQLite-backed via sql.js) with configurable embedding providers. Combines semantic similarity with full-text keyword search (RRF fusion), graph expansion via wikilinks (1-3 hops), local reranking (cross-encoder via WebAssembly), contextual retrieval, and implicit connection discovery between unlinked notes.
Two built-in modes: Ask (read-only knowledge assistant) and Agent (full capabilities). Create custom modes with their own roles, tool sets, and instructions. Per-mode model overrides let you run a fast model for quick questions and a powerful one for complex tasks.
Spawn sub-agents with new_task for complex parallel or sequential workflows. Built-in patterns: Orchestrator-Worker, Prompt Chaining, Evaluator-Optimizer, and Routing. Depth-limited to 2 levels with parallel execution for read-safe tools.
Create PowerPoint, Word, and Excel files directly in your vault:
.pptx template. The agent analyzes every layout and placeholder, plans content with an internal LLM call, and builds the presentation in your exact design.Run TypeScript directly in a secure sandboxed iframe. Import npm packages (pptxgenjs, xlsx, pdf-lib, d3, etc.) from CDN, with no Node.js or shell required. Process data, automate complex batch operations, and create reusable skills with code modules.
Keep your vault clean and discoverable as it grows.
ingest_document parses PDF, DOCX, PPTX, XLSX, CSV, and JSON into structured Markdown with extracted metadata.ingest_triage makes a quick keep / skim / skip decision on a new source before deeper processing.ingest_deep runs a thorough multi-pass ingest with summary, tension detection, ontology mapping, and graph linking back into the vault.vault_health_check audits for orphaned notes, broken links, missing frontmatter, duplicate titles, and stale content. It proposes fixes you can approve in batches.Vault Operator automatically scans your installed Obsidian plugins and generates skill files that teach the agent how to use them. The agent learns each plugin's commands, settings, and file formats, so it can create Excalidraw drawings, build Kanban boards, populate Dataview tables, or use any other plugin on your behalf.
Three-tier memory system:
Mark any vault note as a memory source (via frontmatter or the mark_note_as_memory_source tool) and the agent extracts facts from it automatically on save. Chat-linking adds frontmatter references back to conversations, so you can trace any change to the chat that caused it.
.obsidian-agent/rules/): permanent instructions injected into every system prompt.obsidian-agent/skills/): keyword-matched mini-instructions auto-injected per message.obsidian-agent/workflows/): slash-command driven instruction sets/prompt-slug templates with {{userInput}} and {{activeFile}} variables.obsidian-agentignore and .obsidian-agentprotected access control files| Provider | Type | Auth | Notes |
|---|---|---|---|
| Anthropic | Cloud | API key | Claude model family. Best tool use in testing. |
| OpenAI | Cloud | API key | GPT model family. Fast, good structured output. |
| Cloud | API key | Gemini models. Free tier available. | |
| AWS Bedrock | Cloud | API key or IAM | Anthropic, Mistral, and other models hosted on AWS. EU region support. |
| OpenRouter | Gateway | API key | 100+ models from many providers with a single key. |
| Azure OpenAI | Enterprise | API key + endpoint | Enterprise compliance and private endpoints. |
| GitHub Copilot | Gateway | OAuth | Uses your existing Copilot subscription. No separate API key. |
| ChatGPT (OAuth) | Subscription | OAuth | Use your existing ChatGPT Plus/Pro subscription via the Responses API. |
| Kilo Gateway | Gateway | Device auth / token | Centralized gateway with organization context. |
| Ollama | Local | None | Free, fully private. Many open-source models. |
| LM Studio | Local | None | Free, fully private. Visual model browser. |
| Custom | Any | Varies | Any OpenAI-compatible endpoint. |
You can also pick a helper model for cheap internal tasks (context condensing, fast-path planning, presentation planning) while a more capable model handles the main chat. Settings > Vault Operator > Agent behaviour > Loop > Helper model.
Connect MCP servers via stdio, SSE, or streamable-HTTP. Tools are dynamically discovered and exposed to the agent. Per-mode whitelisting available. Vault Operator can also act as an MCP server, exposing your vault to Claude Desktop or any MCP client.
Vault Operator can act as a remote MCP server for ChatGPT, Claude Desktop, Perplexity, and other AI tools. Conversations and facts from those surfaces flow into the same memory layer as the in-Obsidian agent. One thread of thinking, one searchable vault, regardless of which AI client you used to capture the idea.
Direct deep link (opens Obsidian): obsidian://show-plugin?id=vault-operator Community page: community.obsidian.md/plugins/vault-operator
To run the latest pre-release ahead of the public store:
https://github.com/pssah4/vault-operatorDownload the three release assets and drop them into your plugin folder:
main.js, manifest.json, and styles.css<vault>/.obsidian/plugins/vault-operator/ (create the folder if it does not exist)The three files are everything you need. Workers, WASM, bundled skills and templates are bundled into main.js. Optional features that need a one-time download (Semantic Reranker, Self-Development) prompt for installation from inside the plugin's Settings page.
git clone https://github.com/pssah4/vault-operator.git
cd vault-operator
npm install
npm run build
Then copy main.js, manifest.json, and styles.css from the repo root into <vault>/.obsidian/plugins/vault-operator/.
For search to work at its best, configure an embedding model and build the semantic index in Settings > Embeddings.
This plugin makes network requests depending on your configuration:
web_search, requests go to the configured search API (Brave or Tavily). Disabled by default.esm.sh (with jsdelivr as fallback). Triggered only when an agent script or evaluate_expression call declares dependencies. Packages are cached locally and pinned by version. No requests are made unless user-initiated sandbox code declares a dependency.data.json), which is not encrypted. If you use Obsidian Sync, your settings will be synced.Vault Operator runs on desktop Obsidian and uses several Node.js APIs that go beyond the standard vault API. The plugin only does this where the Obsidian API does not cover the feature; nothing is invoked without a user-initiated action.
fs): required for the local knowledge database (sql.js WASM with atomic writes and snapshots), the office document pipeline (PPTX, DOCX, XLSX, PDF temp files), the shadow git checkpoint store, the semantic index persistence, and the optional asset downloader. All writes stay under the vault path, the plugin data directory (<vault>/.obsidian/plugins/vault-operator/), or a dedicated temp folder that is cleaned up after use.child_process): used to spawn the Node-based sandbox worker (isolated child process for evaluate_expression), the local MCP server proxy, the shadow git executable for checkpoints, and the optional LibreOffice converter when generating presentations. Arguments are not constructed from chat text; commands are fixed binaries with structured argv.vault.getFiles) is used by semantic search, list_files, MOC generation, and inventory tools. The agent only acts on files you reference or explicitly approve.evaluate_expression). Sandbox code runs inside a sealed iframe or a Node vm.runInNewContext realm with an AST allow-list (no eval, no require, no process). Third-party packages from esm.sh are integrity-pinned by version. The sandbox cannot access plugin internals, settings, or other vault files outside the explicit ctx.vault bridge.<vault>/
├── .vault-operator/ # User-facing agent state (renamed from legacy
│ │ # `.obsidian-agent` / `.obsilo-vault`, auto-migrated
│ │ # on first launch)
│ ├── rules/ # Permanent system prompt instructions
│ ├── workflows/ # Slash-command workflow files
│ ├── skills/ # Keyword-matched skill instructions
│ ├── plugin-skills/ # Discovered plugin API skills (VaultDNA cache)
│ └── knowledge.db # Local sql.js knowledge database (vectors, edges,
│ # tags, memory) -- atomic writes, daily snapshots
│
└── .obsidian/plugins/vault-operator/
├── checkpoints/ # Shadow git repo (automatic undo)
├── data.json # Plugin settings (API keys encrypted via OS keychain)
└── dynamic-tools/ # User-authored sandbox skill code
Full documentation: pssah4.github.io/vault-operator
Tutorials
Guides
Reference
Concepts
npm install # Install dependencies
npm run dev # Dev build with watch mode
npm run build # Production build
Apache 2.0