A free, local-first engine for Wikipedia. Search across Wikipedia's own APIs with scroll-triggered infinite scroll, cache every article you touch in IndexedDB, and rank results by fusing JEV determinization (a lightweight JSON Entity Vector) with a local MiniLM embedder. Nothing leaves your browser. No account. No tracking. No closed model endpoints. Just your machine, Wikipedia's public APIs, and a cache that gets sharper every time you use it.
Search fans out to Wikipedia's
action=query&list=search (paginated via continue
for infinite scroll) and action=opensearch, then batches
REST summary fetches for every page. Results are deduped, JEV-scored, and
— when the embedder is on — re-ranked by a hybrid JEV + MiniLM score.
Everything is cached in IndexedDB under openwiki-v1.
Expand fetches the full action=query&prop=extracts body,
the article's prop=categories, and its prop=links
— cached the same way. Nothing is re-fetched twice.
JEV is a 512-dimension float vector computed deterministically from a text: unigrams with position weighting, bigrams, trigrams, and character 3-grams of longer tokens — all hashed into a shared space, weighted, and L2-normalized. Two JEV vectors compare with a single dot product, so ranking thousands of cached articles against a query is instant and requires no model, no download, no server. MiniLM, when on, is fused with JEV via a hybrid score (0.35·JEV + 0.65·MiniLM) — never as a replacement.
Results stream in pages of 20 as you scroll. Loading is strictly
scroll-triggered — the next page loads when a sentinel at the bottom
of the results enters the viewport (with a 400px margin), and there is no
auto-fill and no auto-load. A soft guard (default 1000 loaded results)
keeps the DOM responsive; raise it with /limit <n> (or
/limit 0 for unlimited). Use /loadall to pull the
whole result set at once, then /export results json,
csv, tsv, html, txt,
or md to siphon everything out. /export all json
dumps current results and saved articles in one file.
Every article you SAVE lands in IndexedDB and appears in the
SAVED modal, newest-first. That modal is the single source of
truth for saved articles and the only history log OpenWiki keeps — no
separate search-history store, no duplicate concept. Export it from the
modal (MD/JSON/CSV/HTML/TXT) or with /export saved <fmt>.
Dedup is by title key, so re-saving an article refreshes its timestamp
instead of creating a duplicate.
/search <query> fan-out search across Wikipedia APIs (or just type a query) /more load the next page of results (also triggered by scrolling) /loadall keep loading pages until exhausted or the guard is reached /limit <n> set the loaded-results guard (0 = unlimited) /random fetch 5 random articles /expand <n> expand the result at index n (fetches full extract + categories + links) /save <n> save result at index n to local store /auto related articles for the first current result /saved open saved articles modal /export results <fmt> export all currently loaded results (md|json|csv|tsv|html|txt) /export saved <fmt> export saved articles /export all <fmt> export everything (json recommended) /stats local cache statistics /seed pre-fetch a starter corpus (~20 articles) /embed [on|off|status] toggle MiniLM embedder /clear clear the console /reset reset session (keeps cache) /about open the about page
There is no server. The only outbound traffic is to
en.wikipedia.org (Wikipedia's public read-only APIs) and,
when you enable it, cdn.jsdelivr.net for the MiniLM model
weights. Those weights are cached by the browser after the first load and
run entirely on-device via transformers.js. No query text,
no article text, and no model I/O ever leaves your machine.
No OpenAI, Anthropic, or Google endpoints are ever contacted.
Saved articles and cached extracts live in IndexedDB and
are yours to export or clear at any time.
Wikipedia's read APIs are generous but not unlimited. OpenWiki batches its calls, dedupes aggressively, and caches every response. If you hit a rate limit, wait a few seconds — the console will tell you. There is no hidden queue and no background polling.
OpenWiki is a free tool from webXOS. If it saves you time, you can buy the developer a coffee: buymeacoffee.com/webxos ☕. Donations are optional and never unlock anything extra — the tool is and stays free.