Skip to content

feat: add fastCRW web search provider#439

Open
us wants to merge 1 commit into
nashsu:mainfrom
us:feat/add-fastcrw-search
Open

feat: add fastCRW web search provider#439
us wants to merge 1 commit into
nashsu:mainfrom
us:feat/add-fastcrw-search

Conversation

@us

@us us commented Jun 20, 2026

Copy link
Copy Markdown

What

Adds fastCRW as a web search provider, alongside the existing Tavily / SerpApi / SearXNG / Ollama / Firecrawl options. Because Deep Research consumes the active web-search provider generically, this also makes fastCRW available for Deep Research with no extra wiring.

fastCRW is a SearXNG-based, Firecrawl-compatible search API. It can be used two ways:

  • Managed cloud (https://api.fastcrw.com) with an API key from fastcrw.com.
  • Self-hosted — point the Base URL at your own instance (e.g. http://localhost:3000) for unlimited, private search (no key required unless your instance enables auth).

Why a new provider instead of the existing Firecrawl entry

The Firecrawl entry is configKind: "none" (anonymous, no config). fastCRW needs a Bearer API key for the cloud and a configurable Base URL for self-hosting. Folding it into Firecrawl would change Firecrawl's behavior, so a sibling provider is cleaner and keeps existing providers untouched.

Changes (purely additive)

  • stores/wiki-store.ts"fastcrw" added to the SearchProvider union; fastCrwUrl? added to SearchProviderOverride.
  • lib/web-search.tsfastcrwSearch + normalizer + dispatch case + hasConfiguredSearchProvider/guard branches.
  • components/settings/sections/web-search-section.tsx — provider entry with a new key+url config kind (renders both an API-key and a Base-URL input).
  • i18n/en.json + i18n/zh.json — hint + error strings (parity preserved).
  • lib/web-search.test.ts — 17 tests mirroring the Firecrawl suite.

Notes

  • Endpoint is POST {baseUrl}/v1/search; results are read from either the cloud's flat data array or the self-hosted engine's data.results (both shapes handled).
  • API key + Base URL are read only from the provider's own config (never a stale top-level key), so a keyless self-host never receives another provider's Authorization header.
  • No README/docs edits (mirrors Firecrawl's footprint); intentionally no IP-block error string since fastCRW uses Bearer auth, not anonymous access.

Verification (local)

npm run typecheck · npx vitest run (1541 passed, incl. i18n parity) · npm run build — all green.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant