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
OpenClaw
Benign
high confidencePurpose & 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 ziplatest
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 vsearchonly when keyword search fails and you need semantic similarity (can be very slow on a cold start). - Avoid
qmd queryunless 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 thanvsearchand may timeout.
Performance notes
qmd searchis typically instant.qmd vsearchcan 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 queryadds LLM reranking on top ofvsearch, 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 withXDG_CACHE_HOME).
Relationship to Clawdbot memory search
qmdsearches your local files (notes/docs) that you explicitly index into collections.- Clawdbot's
memory_searchsearches agent memory (saved facts/context from prior interactions). - Use both:
memory_searchfor "what did we decide/learn before?",qmdfor "what's in my notes/docs on disk?".
Files
1 totalSelect a file
Select a file to preview.
Comments
Loading comments…
