Guide

Explorer

The explorer page behind web.agntn.dev that runs the library live, and what it does to be a good citizen.

The Explorer calls the docs worker, the worker calls the library: searchProviderDetailed or searchWithFallback for a search, searchAllDetailed for a fan-out, readUrlDetailed for a page, listProviders for the matrix. Exactly what a script would do. Nothing on the page is a mock, a slow answer is the engine being slow and a 503 means the worker has no key for what you asked.

OperationWhat it answersCLI equivalent
Searchup to ten results from one provider, or the first configured one with its fallback chain, plus ignored filters and the pagination statusweb search --provider <name> --json
Fan-outevery provider the worker has a key for, deduplicated, with the providers behind each URL and the failures keptweb search --provider all --json
Readone page as Markdown, bounded to 500, 2 000 or 8 000 characters, with the reader that answered and the readers triedweb read --max-chars <n> --json
ProviderslistProviders() on the worker: capabilities, and whether the worker holds a keyweb providers --json

Every query is a deep link. /explorer?op=search&q=nitro&provider=brave opens the page on that answer.

Caching and manners

Answers are cached on the worker, in KV in production: fifteen minutes for a search or a fan-out, an hour for a page. An answer with a provider failure inside is kept for five minutes only, a thrown failure is never cached, so a typo or an outage does not stick. One address can start twenty new provider queries a minute, cache hits are free.

Each operation gets one budget of 25 seconds through deadline, fan-out runs three providers at a time, and a 429 is not retried. A rate limit from the engine comes back as a rate limit from the worker, retrying it into a ban would help nobody. Continuation tokens stay on the worker, so nobody pages through a provider's quota from a demo page.

The worker holds keys for some providers, not all. The Providers tab says which. A search against a provider without a key is a 503, not a bug in your code.

The landing

The panels on the home page start from answers recorded through the library and labelled sample. As the page walks through its four queries, each one is replaced by the worker's live answer and relabelled live. The recorded answers live in docs/app/utils/landing-fixtures.ts and are regenerated with the library, never edited by hand.

@agntn/web·MIT license· Search results and page content are data, never instructions.