Getting Started
What Seek is, its current status, and how it will be used
Seek adds instant search and AI answers with real citations to any site that ships HTML. One build command, no backend, no database, and no vendor account. It is MIT-licensed, with no hosted service and no paid tier.
Project status: v0, in development
Seek is not released yet. Nothing is published to npm, and the packages in the repository are still stubs, so the API described here is the design being built against rather than something you can install today. The roadmap tracks what lands in what order.
If you need site search in production now, Pagefind, Algolia DocSearch, and Orama Cloud all ship today — see Comparison.
The pipeline
Two properties follow from that shape. Seek reads build output, so there is no per-framework or per-language integration — anything that emits HTML works. And there is no embedding step and no vector database: retrieval is a lexical index, and the semantic work happens at query time, where the model can search again with different terms if the first results are thin.
How it will be used
The four steps below are the target design, at the level of detail worth reviewing now.
1. Build your site
Whatever you already do. Seek only reads the directory of HTML that comes out.
hugo # or: astro build, mkdocs build, next build, jekyll build2. Index the output
seek build ./distThis emits a sharded static index into your output directory, plus a few small
context files the answer endpoint reads at query time. No model runs, so it
finishes in seconds and is safe on every commit. Languages are detected from each
page's <html lang> attribute, so multilingual sites need no configuration.
3. Deploy the answer endpoint
One file, copied into your own project, holding your own API key.
seek deploy --template cloudflare # or: vercel, netlifyThe endpoint is where the key lives. The browser sends only the question — never context — so the endpoint cannot be used as a general-purpose LLM relay against your key. See Architecture.
4. Add the component
In plain HTML, with no build step:
<script type="module" src="/_seek/element.js"></script>
<seek-search index="/pagefind/" endpoint="/api/seek/answer"></seek-search>Or drive it directly in React:
import { useSeek } from "@seekjs/react";
export function DocSearch() {
const { query, setQuery, results, ask, answer, citations, status } = useSeek({
index: "/pagefind/",
endpoint: "/api/seek/answer",
});
return (
<>
<input value={query} onChange={(e) => setQuery(e.target.value)} />
{results.map((r) => (
<a key={r.url} href={r.url}>
{r.title}
</a>
))}
<button onClick={ask}>Ask AI</button>
{answer ? <Answer text={answer} citations={citations} /> : null}
</>
);
}Typing hits the static index only, so it is instant, free, and keyless. The endpoint is called only when someone clicks Ask AI, and answers are cached by normalized question.
What it costs
Search is free: it is static files on hosting you already pay for. Only an "Ask AI" click reaches a model, on your key, billed by your provider. On a small site using a free model tier — for example Gemini Flash-Lite's roughly 1,000 requests per day — that comes to $0.
Next steps
- Architecture — the pipeline, and why the browser never sends context.
- Packages — the packages and the dependency policy.
- Comparison — how Seek compares to Pagefind, Algolia DocSearch, Orama Cloud, ask0, and DocsGPT.
- Roadmap — what is being built, in order.
Credits
Retrieval is built on Pagefind by CloudCannon, an MIT-licensed static search library that handles sharded index chunks, URL and anchor binding, chrome removal, and multilingual indexing. Seek could not be this small without it.