qmd External Knowledge Base Search

Local hybrid search for markdown notes and docs. Use when searching notes, finding related content, or retrieving documents from indexed collections.

MIT-0 · Free to use, modify, and redistribute. No attribution required.
7 · 3.1k · 18 current installs · 18 all-time installs
MIT-0
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description match the declared requirements: the skill requires the 'qmd' binary and its SKILL.md documents how to use qmd to index and search local Markdown collections. No unrelated credentials, binaries, or config paths are requested.
Instruction Scope
Instructions stay within the scope of indexing and searching local Markdown files, but explicitly instruct the agent to run commands that will: (1) download GGUF models on first run, (2) perform embedding work (which may invoke local LLMs and load models into memory), and (3) optionally create scheduled jobs (cron) that re-index/embeds. These behaviors imply network downloads and persistent disk writes (cache and model files) and potential high CPU/RAM usage; they are expected for this tool but worth noting.
Install Mechanism
No formal install spec in the registry, but SKILL.md includes an install command (bun install -g https://github.com/tobi/qmd). Installing via bun will fetch and run code from the qmd GitHub repo — this is reasonable for an open-source tool but does execute external code, so verify the repository/source before installing.
Credentials
The skill does not request secrets or unrelated environment variables. It references PATH and XDG_CACHE_HOME (for cache location), which are appropriate and proportional to running a local binary that caches models and data.
Persistence & Privilege
The skill does not request always: true and doesn't modify other skills. It suggests optionally scheduling reindexes (cron) which is normal for keeping an index fresh; this is a user-controlled persistence step rather than implicit forced presence.
Assessment
This skill appears to be what it says: a local Markdown search wrapper around the qmd binary. Before installing and using it, consider: (1) the install command pulls code from the qmd GitHub repo — review/trust the repo before running bun install -g; (2) on first runs qmd may download GGUF models and write them to ~/.cache/qmd/models (or XDG_CACHE_HOME) — expect network activity and significant disk and memory use if local LLMs are loaded; (3) only index directories you intend to expose to the tool (don’t point it at system or sensitive paths); and (4) if you plan to use scheduled reindexing or keep local models warm, consider running those jobs in an isolated environment or container. If any of the above is a concern, review the upstream project and run qmd manually in a controlled environment before granting the agent permission to invoke it automatically.

Like a lobster shell, security has layers — review code before you run it.

Current versionv1.1.0
Download zip
latestvk979c6s36ymxvtxmgcd4fhb3r1802daq

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

Runtime requirements

🔍 Clawdis
OSmacOS · Linux
Binsqmd

SKILL.md

qmd - Quick Markdown Search

Local search engine for Markdown notes, docs, and knowledge bases. Index once, search fast.

When to use (trigger phrases)

  • "search my notes / docs / knowledge base"
  • "find related notes"
  • "retrieve a markdown document from my collection"
  • "search local markdown files"

Default behavior (important)

  • Prefer qmd search (BM25). It's typically instant and should be the default.
  • Use qmd vsearch only when keyword search fails and you need semantic similarity (can be very slow on a cold start).
  • Avoid qmd query unless the user explicitly wants the highest quality hybrid results and can tolerate long runtimes/timeouts.

Prerequisites

  • Bun >= 1.0.0
  • macOS: brew install sqlite (SQLite extensions)
  • Ensure PATH includes: $HOME/.bun/bin

Install Bun (macOS): brew install oven-sh/bun/bun

Install

bun install -g https://github.com/tobi/qmd

Setup

qmd collection add /path/to/notes --name notes --mask "**/*.md"
qmd context add qmd://notes "Description of this collection"  # optional
qmd embed  # one-time to enable vector + hybrid search

What it indexes

  • Intended for Markdown collections (commonly **/*.md).
  • In our testing, "messy" Markdown is fine: chunking is content-based (roughly a few hundred tokens per chunk), not strict heading/structure based.
  • Not a replacement for code search; use code search tools for repositories/source trees.

Search modes

  • qmd search (default): fast keyword match (BM25)
  • qmd vsearch (last resort): semantic similarity (vector). Often slow due to local LLM work before the vector lookup.
  • qmd query (generally skip): hybrid search + LLM reranking. Often slower than vsearch and may timeout.

Performance notes

  • qmd search is typically instant.
  • qmd vsearch can be ~1 minute on some machines because query expansion may load a local model (e.g., Qwen3-1.7B) into memory per run; the vector lookup itself is usually fast.
  • qmd query adds LLM reranking on top of vsearch, so it can be even slower and less reliable for interactive use.
  • If you need repeated semantic searches, consider keeping the process/model warm (e.g., a long-lived qmd/MCP server mode if available in your setup) rather than invoking a cold-start LLM each time.

Common commands

qmd search "query"             # default
qmd vsearch "query"
qmd query "query"
qmd search "query" -c notes     # Search specific collection
qmd search "query" -n 10        # More results
qmd search "query" --json       # JSON output
qmd search "query" --all --files --min-score 0.3

Useful options

  • -n <num>: number of results
  • -c, --collection <name>: restrict to a collection
  • --all --min-score <num>: return all matches above a threshold
  • --json / --files: agent-friendly output formats
  • --full: return full document content

Retrieve

qmd get "path/to/file.md"       # Full document
qmd get "#docid"                # By ID from search results
qmd multi-get "journals/2025-05*.md"
qmd multi-get "doc1.md, doc2.md, #abc123" --json

Maintenance

qmd status                      # Index health
qmd update                      # Re-index changed files
qmd embed                       # Update embeddings

Keeping the index fresh

Set up a cron job or hook to automatically re-index. For example, a daily 5 AM reindex:

# Via Clawdbot cron (isolated job, runs silently):
clawdbot cron add \
  --name "qmd-reindex" \
  --cron "0 5 * * *" \
  --tz "America/New_York" \
  --session isolated \
  --message "Run: export PATH=\"\$HOME/.bun/bin:\$PATH\" && qmd update && qmd embed" 

# Or via system crontab:
0 5 * * * export PATH="$HOME/.bun/bin:$PATH" && qmd update && qmd embed

This ensures your vault search stays current as you add or edit notes.

Models and cache

  • Uses local GGUF models; first run auto-downloads them.
  • Default cache: ~/.cache/qmd/models/ (override with XDG_CACHE_HOME).

Relationship to Clawdbot memory search

  • qmd searches your local files (notes/docs) that you explicitly index into collections.
  • Clawdbot's memory_search searches agent memory (saved facts/context from prior interactions).
  • Use both: memory_search for "what did we decide/learn before?", qmd for "what's in my notes/docs on disk?".

Files

1 total
Select a file
Select a file to preview.

Comments

Loading comments…