Skip to content

SearXNG Integration

SearXNG is a privacy-respecting metasearch engine that aggregates results from multiple search providers. It’s included in the default Docker Compose setup and powers the web_search tool.

The Docker Compose configuration starts SearXNG with:

searxng:
image: searxng/searxng:2026.2.16
ports:
- "8080:8080"
VariableValueDescription
FRONA_SEARCH_PROVIDERsearxngUse SearXNG as the search provider
FRONA_SEARCH_SEARXNG_BASE_URLhttp://searxng:8080SearXNG endpoint URL

SearXNG has its own configuration file (settings.yml). To customize it, mount a config file:

searxng:
volumes:
- ./searxng/settings.yml:/etc/searxng/settings.yml

Frona fetches search results from SearXNG as JSON. By default, SearXNG only enables HTML output. You need to enable the json format in your settings.yml:

search:
formats:
- html
- json

Without this, the web_search tool will fail because SearXNG won’t return JSON responses.

  • Engines: enable/disable specific search engines
  • Rate limiting: adjust rate limits for search engines
  • Language and region: set default search language

SearXNG aggregates results from many search engines. By default, it queries a broad set including Google, Bing, DuckDuckGo, and others. You can customize which engines are active in the SearXNG settings.

If you prefer not to self-host a search engine, Frona also supports:

  • Tavily: API-based search service
  • Brave: Brave Search API

Set FRONA_SEARCH_PROVIDER to the provider name and configure the appropriate API key.

  • No search results: verify SearXNG is running (docker compose ps searxng)
  • Slow searches: some upstream search engines may be slow or rate-limited
  • Empty results from specific engines: check SearXNG logs for engine-specific errors
  • Test directly: curl http://localhost:8080/search?q=test&format=json should return results