We’re excited to share the first alpha release of docmd-search.
docmd-search is a semantic search engine built for documentation sites. It runs entirely in the browser, requires no servers or API keys, and keeps all search processing local.
Although created for docmd, it isn’t tied to any particular framework. It can be integrated into documentation platforms, websites, and web applications.
This is an early alpha release. APIs, models, and behaviour will continue to evolve as we gather feedback and real-world usage.
What’s in This Release
Core Engine
- Local semantic indexing - Generates vector embeddings at build time using
Xenova/all-MiniLM-L6-v2, powered by@xenova/transformers - Browser-side search - Ranking and retrieval happen entirely in the browser using pre-built indexes
- Chunked indexing - Content is split into configurable overlapping chunks to improve search quality on longer pages
- Multi-version support - Documentation versions can be indexed independently and searched together
CLI
docmd-search
Indexes a directory of Markdown files into .docmd-search/.
docmd-search --ui
Launches a standalone search UI using an existing index without rebuilding.
<img width=“720” class=“with-border” src=“/assets/previews/search-ui-semantic.webp”>
Additional options:
--output
--model
--chunk-size
--chunk-overlap
Search UI Options
| Option | Default | Description |
|---|---|---|
semantic |
false |
Enable semantic search |
showConfidence |
false |
Display confidence percentages on results |
showFilters |
true |
Show the version filter bar |
indexDir |
- | Use an existing pre-built index |
Automatic Fallback
If docmd-search is not installed, @docmd/plugin-search automatically falls back to keyword search. Documentation remains fully searchable without any additional configuration.
Known Limitations
- The default model performs best on English content
- Multilingual models are available but have not yet been tested extensively
- Full re-indexing is currently required when content changes
- The first search may take longer while the browser loads the model and search index
- Browser memory usage typically ranges between 50-100 MB while the model is loaded
What’s Next
We’re currently exploring:
- Incremental index updates
- Improved multilingual support
- Smaller and quantised model variants
- Additional ranking signals and relevance improvements
- A standalone search UI that can be used outside of docmd
Thanks 💖
A huge thank you to the Transformers.js team for making browser-based language models practical and accessible.
And thank you to everyone who asked for better documentation search, tested early builds, shared feedback, and helped shape the project.