Search...Search plugins and themes...
⌘K
Sign in
  • Get started
  • Download
  • Pricing
  • Enterprise
  • Account
  • Obsidian
  • Overview
  • Sync
  • Publish
  • Canvas
  • Mobile
  • Web Clipper
  • CLI
  • Learn
  • Help
  • Developers
  • Changelog
  • About
  • Roadmap
  • Blog
  • Resources
  • System status
  • License overview
  • Terms of service
  • Privacy policy
  • Security
  • Community
  • Plugins
  • Themes
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian

QMD Vault Search

dingzy53dingzy5337 downloads

Search your vault with its own QMD index: hybrid keyword and semantic search, deep search on demand, and related notes.

Add to Obsidian
  • Overview
  • Scorecard
  • Updates5

Search your Obsidian vault with its own QMD index. No runtime dependencies.

Searching the vault

Features

  • Fast hybrid search: keyword and semantic results in one list.
  • Deep search with LLM query expansion, on demand.
  • A related-notes panel that follows the note you are on.
  • The index refreshes at startup and once a day.

Requirements

  • Obsidian 1.13.0 or newer, desktop only. Tested on Linux (Flatpak and native) and macOS; Windows is untested.

  • qmd installed, and an index inside the vault that contains the vault. In the vault folder, run:

    qmd init
    qmd collection add .
    

    qmd init alone creates an empty index; the plugin then says that it has no collections.

qmd installed with a Node version manager (fnm, nvm, volta, asdf, mise): the plugin also looks in the manager's default folders. If the status bar still says it can't find qmd, set Path to qmd in the settings. On macOS, Obsidian started from the Dock or Finder doesn't get the PATH set in your shell profile.

Installation

From the community directory (recommended)

  1. Open Settings → Community plugins and turn on community plugins if asked.
  2. Select Browse, search for QMD Vault Search, then select Install and Enable.

You can also open the plugin's page: community.obsidian.md/plugins/qmd-vault-search.

Manually

  1. Download main.js, manifest.json and styles.css from the latest release.
  2. In Settings → Community plugins, select the folder icon next to Installed plugins. This opens <vault>/.obsidian/plugins/.
  3. Create a folder named qmd-vault-search there and put the three files in it.
  4. Select the reload icon next to Installed plugins, then enable QMD Vault Search.

Beta versions: install BRAT and add dingzy53/obsidian-qmd.

Update or remove: select Check for updates or Uninstall in Settings → Community plugins.

Upgrading from the qmd-search or obsidian-qmd folder: the plugin ID is now qmd-vault-search. Copy data.json from the old plugin folder into the new one to keep your settings, then delete the old folder.

How it works

  • The vault's own index. The plugin runs qmd inside the vault folder, so qmd uses <vault>/.qmd/index.sqlite and <vault>/.qmd/index.yml (created with qmd init and qmd collection add .). If that index cannot be found the plugin says so and stops; it never falls back to the global index.
  • A warm server. While Obsidian is open the plugin keeps one qmd mcp --http process running so the embedding model stays loaded. A fused keyword + vector search then takes roughly 0.3–0.7 s instead of 10+ s per search through the CLI. The server stops when the plugin is disabled or Obsidian closes.
  • Scheduled refresh. About 20 seconds after launch, and once a day after a set hour, the plugin runs qmd update and, if anything changed, qmd embed. When nothing changed it does nothing else.

Usage

Surface Open with What it does
Quick search command QMD Vault Search: Search (assign a hotkey) Type to search; results update as you type.
Vault search panel ribbon icon ✨ or Open search panel The same search in the right sidebar; results stay while you work.
Related notes Open related notes Notes semantically close to the note you are on. Follows the active note.
Selection Search selected text Sends the selection to the search panel.

Each result shows the note name, its folder, the matched section and an excerpt taken from the note itself (math rendered, never cut mid-formula).

Quick search

Keys in the search box

Key Action
↑ / ↓ Move through results (↑ on an empty box recalls the last query)
Enter Open the note at the match and flash it
Ctrl/Cmd+Enter Open in a new tab
Ctrl/Cmd+Alt+Enter Open to the right
Shift+Enter Deep search: rerun with LLM query expansion (about 15–20 s on CPU)
Alt+Enter Insert a link to the result at the cursor

Mouse: click opens, Ctrl-click or middle-click opens a new tab, resting on a row in a sidebar panel shows a page preview (after about 2 s, or at once with Ctrl held), right-click gives a menu, and a row can be dragged into a note to make a link.

Query syntax: "exact phrase" and -excluded work for the keyword half of the search. Folder filter: type a folder in the field under the search box.

Excluding folders: right-click a folder and choose Exclude from qmd index, or use Excluded folders in settings. Its notes leave search after a short refresh. Their text stays in the index file until you press Purge.

The status bar item QMD ● shows the state (green ready, yellow starting or indexing, red problem). Click it to update the index, restart the server or open settings.

Settings

Setting Default Notes
Index location vault root Folder that contains .qmd. The row below it shows the index status.
Path to qmd auto-detect
Excluded folders none Saved as ignore rules in .qmd/index.yml, so qmd run from a terminal follows them too.
Refresh at startup on
Refresh daily on, 04:00 First chance after that hour while Obsidian is open.
Purge removed notes button Runs qmd cleanup with the server stopped. Notes you include again are embedded again.
Embed changed notes on Runs qmd embed after an update that changed something.
Keep a qmd server running on Off = keyword search only. Status, log and port show while it is on.
Port 8421 The next five are tried if it is taken.
Search results 20 Up to 40.
Related notes shown 10
Hover preview delay 2 s Sidebar panels. Ctrl/Cmd-hover previews at once.
Rerank deep search off Minutes without a dedicated GPU. Shows Rerank candidates when on.

All settings appear in Obsidian's settings search.

Privacy and security

  • Network: the plugin talks only to the qmd server it starts itself, over HTTP on localhost. The plugin sends nothing to the internet. qmd downloads its embedding and query models the first time they are needed; see the qmd documentation.
  • Files outside the vault: the plugin runs the external qmd program, which you install yourself. To find it, the plugin looks in the usual install folders (~/.local/bin, ~/.bun/bin, ~/.cargo/bin, /usr/local/bin, /opt/homebrew/bin, /usr/bin, the default folders of fnm, nvm, volta, asdf and mise, and npm's global folder on Windows) and on PATH. qmd keeps its models and cache in your home directory. If you set Index location to a folder outside the vault, the index is read from and written there.
  • Running programs (child_process): the plugin starts only the qmd binary, with fixed arguments and never through a shell: the search server, searches, update, embed, status and cleanup, plus which/where to locate qmd. Under Flatpak these run on the host through flatpak-spawn --host, because qmd is installed outside the sandbox.
  • Direct file access (fs): the index lives in a hidden .qmd folder, or outside the vault if you choose, which Obsidian's vault API does not reach. The plugin uses Node's fs only to read .qmd/index.yml, to rewrite its ignore list (see Config file), to check whether the qmd binary or /.flatpak-info exists, and to list nvm's installed Node versions. Notes are read through Obsidian's vault API.
  • Config file: excluding or including a folder, or renaming an excluded one, edits the ignore list in .qmd/index.yml. Nothing else in that file is changed.
  • Clipboard: the plugin only writes to the clipboard, never reads it. It writes a link to a note when you choose Copy link on a result, or when you insert a link with no note open.
  • No telemetry, ads, accounts or payments.

Limitations

  • .qmd/index.sqlite changes whenever the index is refreshed after notes changed. While the server runs, the newest writes sit in index.sqlite-wal and are folded into index.sqlite when the server stops or restarts.
  • A fused search draws on the top 20 keyword and top 20 semantic hits. With a folder filter the plugin tops the list up with a wider keyword search.
  • Reranking and query expansion are CPU-bound LLM work; only fast search is instant.
  • Until you purge, the vectors of excluded notes still take up places among the nearest matches, so semantic results can be thinner. Including a folder again before a purge needs no re-embedding.

Development

npm install
npm run dev      # watch build
npm run build    # type-check and bundle to main.js
npm run lint     # the same eslint-plugin-obsidianmd rules the community-plugin review runs
npm test
QMD_PLUGIN_DIR=<vault>/.obsidian/plugins/qmd-vault-search npm run deploy   # build and copy into a vault

Then reload the plugin: obsidian plugin:reload id=qmd-vault-search. See AGENTS.md for design notes.

Releasing

npm version patch   # bumps package.json, manifest.json and versions.json, commits and tags (no "v" prefix, see .npmrc)
git push --follow-tags

The tag triggers the Release workflow. It lints, tests and builds, then attaches main.js, manifest.json and styles.css to a GitHub release. Never upload a main.js you built locally: the community directory rebuilds the tagged source with npm run build and checks that the result matches the release.

Community directory. The plugin is submitted once at community.obsidian.md, from the plugin's page there. Before tagging, run Review branch on main to preview the automated review (manifest, release assets, source code, build verification). After the first submission, every new GitHub release is picked up automatically, or straight away with Request review.

License

MIT © 2026 Ding Zheng Yuan

HealthExcellent
ReviewSatisfactory
About
Search your vault with a local QMD index using fast fused keyword + semantic results and optional LLM-expanded deep search. Keep a warm qmd server for sub-second queries and show a related-notes panel while relying solely on the vault's .qmd index.
SearchAI
Details
Current version
2.1.3
Last updated
Last week
Created
3 weeks ago
Updates
5 releases
Downloads
37
Compatible with
Obsidian 1.13.0+
Platforms
Desktop only
License
MIT
Report bugRequest featureReport plugin
Author
dingzy53dingzy53dingzy53
GitHubdingzy53
  1. Community
  2. Plugins
  3. Search
  4. QMD Vault Search

Related plugins

Smart Connections

Find related notes and excerpts while writing. Your AI link building copilot displays relevant content in graph + list view. A local embedding model powers semantic search. Zero setup. No API key.

Local LLM Helper

Use a local LLM server to augment your notes

Smart Second Brain

Chat with an agent that knows your notes, search by meaning, and see your vault grouped into topics. Runs on Ollama, OpenAI, Anthropic, and more.

Vault Curate

A local-first second brain for Obsidian , Desktop / Mobile ok, semantic search · relation graph · semantic paths · Hot/Cold rediscovery · strong Chinese/CJK · WebGPU on-device · no API keys. RAG LLM.

AI image analyzer

Analyze images with AI to get keywords of the image.

Smart Lookup

Semantic search for your vault. Ask in natural language, find notes by meaning when exact words fail, preview matching notes, and turn forgotten ideas into links, context, and next steps.

Similarity

Search, explore and see related notes based on their meaning (semantics). Using a tiny AI running fully on-device: data never leaves your machine, no API keys needed. Especially great for journaling.

Claudian

Embeds Claude Code/Codex and other local Agents as AI collaborators in your vault.

Quick Switcher++

Enhanced Quick Switcher, search open panels, and symbols.

Fast Note Sync

Real-time sync of your vaults across server, mobile, and web; shareable with anyone; supports REST and MCP integrations to build your personal AI knowledge base.