docmd-search v0.1.1 is now available →

Search that understands meaning.
Runs in the browser. Completely private.

Offline semantic search for any documentation site. Understands meaning, runs entirely in the browser, and never sends data to the cloud.

Get Started
Local Vector Engine 100% Private Quantized Index Zero Cloud Costs
docmd-search sandbox
User Authentication & Sessions
/getting-started/security
98% match
Configure how your application handles user login, secure cookies, token generation, and stateless session verification.
Configuring Custom Secure Routes
/configuration/routing
89% match
Define private directories and redirect configurations for unauthenticated guest sessions trying to access signin paths.

How it works

Smart search for static documentation, with no servers or third-party services required.

Runs Locally in the Browser

Uses lightweight AI models that execute directly in the browser. No data ever leaves your users' devices.

ONNX Wasm Runtime — 100% Offline

Understands What You Mean

Goes beyond exact keyword matching. Searching for 'authentication' also finds results about 'sign-in', 'login', and 'sessions'.

Cosine Similarity Matching

Hybrid Keyword + Semantic

Combines fast keyword matching with meaning-aware similarity scoring for the most relevant results, instantly.

BM25 + Cosine Re-ranker

Choose your search model

Pick the model that fits your documentation size and language requirements.

Model Dimensions Size Languages Best For
MiniLM L6 v2 ★ 384 ~23 MB English only Fast, general English docs
Multilingual MiniLM L12 384 ~118 MB 50+ languages i18n documentation
Multilingual E5 Small 384 ~118 MB 100+ languages Wide language coverage
Multilingual MPNet Base 768 ~270 MB 50+ languages Best multilingual quality

💡 Multilingual documentation: If your documentation website contains multiple languages (such as English, Chinese, German, Spanish, etc.), select a multilingual model using docmd-search --settings. The default model is English-only and will produce poor search relevance for other languages.

Use it anywhere: the client API

A lightweight client runtime (under 5 KB) that runs entirely in the browser. Build custom search UIs for any website or application.

import * as Search from '@docmd/plugin-search/client';

// 1. Initialise and load index folder.
// Batch 0 is loaded instantly for sub-millisecond search startup,
// while remaining chunk batches load progressively in background.
await Search.load('/.docmd-search', (loaded, total) => {
  console.log(`Loaded batch ${loaded}/${total}`);
});

// 2. Query search using hybrid vector + keyword matching.
const results = Search.search('authentication secure routes', 10);
results.forEach(({ score, chunk }) => {
  console.log(`[${(score * 100).toFixed(0)}%] ${chunk.file}#${chunk.heading || ''}`);
  console.log(chunk.text);
});

Frequently asked questions

Common questions about docmd-search and offline semantic search.

Does it run entirely in the browser?
Yes. All search happens directly in your users' browsers. No cloud infrastructure, no search API, and no data ever leaves the device.

Read the full documentation →
Do users need to download AI models?
No. The AI models are only used at build time on your machine to generate pre-computed search indices. Users' browsers only download the resulting index files — small, compressed JSON chunks.

Learn how offline search works →
Does it work with multiple languages?
Yes. For multilingual documentation, choose a multilingual model such as paraphrase-multilingual-MiniLM-L12-v2, which supports over 50 languages. The default model is English-only.

Configure multilingual search →
What is the confidence score badge?
When enabled, the showConfidence setting displays a percentage badge next to each search result showing how closely it matches the query. This helps users quickly judge which results are most relevant.

Read about browser client settings →

Start building in minutes

Open source, MIT licensed. One command to your first documentation site.