feat: add SearXNG as a native web search backend

Adds SearXNG (https://docs.searxng.org) as a self-hosted, privacy-first
web search backend alongside Firecrawl, Tavily, Exa, and Parallel.

SearXNG is a meta-search engine that aggregates results from 70+ search
engines. No API key needed -- just set SEARXNG_URL to your instance.

Changes:
- tools/web_tools.py: _get_searxng_url(), _searxng_search(), search
  dispatch, extract falls back to Firecrawl (SearXNG is search-only)
- hermes_cli/tools_config.py: SearXNG provider in web tool picker
- hermes_cli/config.py: SEARXNG_URL env var, diagnostics, set command
- tests/tools/test_web_tools_searxng.py: 15 tests
- optional-skills/research/searxng-search/: agent-guided skill
- Docs: configuration.md, environment-variables.md, skills catalogs

Based on #6071 by @gnanam1990, #8106 by @cro, #2572 by @bhovig,
#2710 and #9961 by @StreamOfRon, #7258 by @coldxiangyu163
This commit is contained in:
kshitijk4poor 2026-04-17 14:37:59 +05:30
parent 2367c6ffd5
commit 130b021d74
10 changed files with 600 additions and 6 deletions

View file

@ -235,6 +235,15 @@ TOOL_CATEGORIES = {
{"key": "TAVILY_API_KEY", "prompt": "Tavily API key", "url": "https://app.tavily.com/home"},
],
},
{
"name": "SearXNG",
"badge": "free · self-hosted",
"tag": "Open-source federated search (self-hosted)",
"web_backend": "searxng",
"env_vars": [
{"key": "SEARXNG_URL", "prompt": "SearXNG instance URL (e.g., https://searx.example.com)"},
],
},
{
"name": "Firecrawl Self-Hosted",
"badge": "free · self-hosted",