Searchable Feature gallery

ADR-0001: Pull-based static HTTP transport, no query-time backend

Status

Accepted. The current implementation is the Python builder in python/searchable and the TypeScript client in packages/searchable.

Context

The core problem statement (getting-started/overview.md) is search-service quality without a search service: no per-query infrastructure, no hosted API, no query-time billing. That requires picking, once, how the runtime gets index data at all — a query-time API server, a database the browser talks to directly, or files fetched over plain HTTP.

Decision

The indexer runs offline and emits an immutable, content-hashed set of static files (manifest + shards, concepts/index-format.md). The browser runtime (@ktjn/searchable) only ever issues plain fetch() GET requests against whatever static host serves those files, lazily fetching just the shards a given query touches. There is no query-time write path, no server-side logic, and no protocol beyond HTTP GET + standard cache headers.

Alternatives Considered

Consequences