Skip to content

SearXNG

SearXNG is a free, open-source metasearch engine that aggregates results from Google, Bing, DuckDuckGo, and dozens of other sources. By running your own instance, lynox gets unlimited web search — no API key, no monthly limits, no cost.

lynox has two independent web search mechanisms:

  1. Anthropic built-in web_search — server-side, automatic, only with Anthropic direct API.
  2. web_research tool — client-side, works with every LLM provider. Backed by SearXNG when you configure it, otherwise a best-effort DuckDuckGo HTML-scrape fallback (so the tool is always registered and the agent never has to fabricate).

Both can coexist — the model chooses which to use.

For the web_research tool, SearXNG is the supported full-quality backend. Setting up a SearXNG instance is a deliberate, unlimited choice; the DDG fallback is there to keep web_research honest on a no-config install, not as a long-term substitute.

Configweb_research backend
SEARXNG_URL set (or docker-compose)SearXNG
Neither setDuckDuckGo HTML-scrape (best-effort fallback)

Docker Compose (default — no setup needed)

Section titled “Docker Compose (default — no setup needed)”

SearXNG is included in the standard docker-compose.yml. Just run:

Terminal window
docker compose up -d

Web search works immediately. Verify in the Web UI under Settings → Integrations — the SearXNG card shows “Connected”.

Standalone (for npx or single-container users only)

Section titled “Standalone (for npx or single-container users only)”

If you’re not using docker-compose, start SearXNG separately:

Terminal window
docker run -d --name searxng -p 8888:8080 searxng/searxng:latest

Then configure lynox:

Via Web UI: Settings → Integrations → SearXNG. Enter the URL and test the connection.

Via environment variable or config:

Terminal window
export SEARXNG_URL=http://localhost:8888

SearXNG is included and active by default in the standard docker-compose.yml. No extra setup needed — just docker compose up.

lynox ships a pre-configured searxng/settings.yml with optimized engines:

  • General: Google, DuckDuckGo, Bing, Wikipedia, Wikidata
  • News: Google News, DuckDuckGo News, Bing News
  • Science: Google Scholar, Semantic Scholar, arXiv
  • IT: GitHub, StackOverflow, npm, PyPI
Anthropic Built-inSearXNGDDG fallback
CostIncludedFreeFree
API key requiredNoNoNo
ProvidersAnthropic onlyAllAll
Content extractionDeep (full page)Auto-enriched (top 3 results)Snippet only (no enrichment)
QualityHigh (Claude-optimized)High (enriched + multi-engine)Best-effort (single engine, HTML scrape)
SetupZeroDocker container or URL envZero
Rate limitsAPI rate limitsUnlimitedDDG may rate-limit / CAPTCHA

Content enrichment: lynox automatically fetches full page content for the top 3 search results using its built-in content extractor (Readability-based). A 10-second timeout ensures search stays responsive even when pages are slow.

DDG fallback caveats: parses HTML (brittle if DDG changes layout), no time_range filter, no topic categories, and occasional empty results under load. Treat it as the “agent doesn’t have to fabricate” safety net, not a replacement for SearXNG.

The web_research tool supports topic-based search:

TopicSearXNG CategoryEngines
general(default)Google, DuckDuckGo, Bing, Wikipedia
newsnewsGoogle News, DuckDuckGo News, Bing News
sciencescienceGoogle Scholar, Semantic Scholar, arXiv
finance(general)Google, DuckDuckGo, Bing + currency engine

Code/library/API queries (GitHub, npm, PyPI, StackOverflow) are intentionally not routed via the SearXNG it category — the dedicated code-index engines lack full-text web indices, so filtered queries return zero hits. The general engines surface the same sources reliably; omit topic for IT/code searches.

Edit searxng/settings.yml in the repo to:

  • Add/remove engines — see use_default_settings.engines.keep_only
  • Change languagesearch.default_lang (default: auto)
  • Adjust timeoutoutgoing.request_timeout (default: 5s)

See the SearXNG documentation for all options.