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.
Default setup
Section titled “Default setup”The Docker Compose configuration starts SearXNG with:
searxng: image: searxng/searxng:2026.2.16 ports: - "8080:8080"Configuration
Section titled “Configuration”Frona settings
Section titled “Frona settings”| Variable | Value | Description |
|---|---|---|
FRONA_SEARCH_PROVIDER | searxng | Use SearXNG as the search provider |
FRONA_SEARCH_SEARXNG_BASE_URL | http://searxng:8080 | SearXNG endpoint URL |
SearXNG settings
Section titled “SearXNG settings”SearXNG has its own configuration file (settings.yml). To customize it, mount a config file:
searxng: volumes: - ./searxng/settings.yml:/etc/searxng/settings.ymlEnable JSON format
Section titled “Enable JSON format”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 - jsonWithout this, the web_search tool will fail because SearXNG won’t return JSON responses.
Other customizations
Section titled “Other customizations”- Engines: enable/disable specific search engines
- Rate limiting: adjust rate limits for search engines
- Language and region: set default search language
Search engines
Section titled “Search engines”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.
Alternative search providers
Section titled “Alternative search providers”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.
Troubleshooting
Section titled “Troubleshooting”- 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=jsonshould return results