Skip to content

feat(web): add SearXNG as free local search backend#2

Open
directorboint-arch wants to merge 2 commits into
mainfrom
feat/searxng-local-search
Open

feat(web): add SearXNG as free local search backend#2
directorboint-arch wants to merge 2 commits into
mainfrom
feat/searxng-local-search

Conversation

@directorboint-arch
Copy link
Copy Markdown
Owner

Summary

Add SearXNG as a zero-cost, fully self-hosted web search backend for Hermes Agent.

When SEARXNG_URL is set in the environment (e.g. http://localhost:4000), SearXNG becomes the highest-priority search backend — ahead of Firecrawl, Parallel, Tavily, and Exa. No paid API keys required.

Changes

  • _searxng_search(query, limit) — new function that queries the SearXNG JSON API and normalizes results to the standard response format
  • _get_backend() — registers searxng as a valid configured backend and adds it as the first priority in auto-detection via SEARXNG_URL env var
  • _is_backend_available() — adds availability check for SearXNG backend
  • web_search_tool() — adds dispatch branch for SearXNG alongside existing backends (Parallel, Exa, Tavily, Firecrawl)

Why This Matters

SearXNG is a privacy-respecting, self-hosted metasearch engine. This change lets users run a local instance and get web search for free with zero API key costs, zero rate limits, and full privacy — your queries never leave your own server.

Configuration

Set SEARXNG_URL in your .env:

SEARXNG_URL=http://localhost:4000

Or set web.backend = searxng in config.yaml to force it explicitly.

SearXNG auto-detects and takes priority over all paid backends. If you want to use a different backend, configure it explicitly in config.yaml.

directorboint-arch added 2 commits April 28, 2026 16:42
- tools/tts_tool.py: Include 'signal' in want_opus check so TTS tools
  generate Opus (.ogg) audio for Signal just like Telegram, enabling
  proper voice message format.

- gateway/platforms/signal.py: Rewrite send_voice() to pass
  voiceNote=true to signal-cli's JSON-RPC API so Signal renders audio
  as inline voice messages with waveform playback instead of plain file
  attachments. Includes proper size validation and typing indicators.

- website/docs/user-guide/messaging/signal.md: Update docs to reflect
  that send_voice now delivers inline voice notes rather than attachments.
Add SearXNG support as a zero-API-key, fully self-hosted web search
backend. When SEARXNG_URL is set in the environment, SearXNG becomes
the highest-priority search backend ahead of Firecrawl, Parallel,
Tavily, and Exa - no paid API required.

Changes:
- Add ${_searxng_search()} function that queries SearXNG JSON API
- Register 'searxng' in _get_backend() and _is_backend_available()
- Dispatch SearXNG in web_search_tool() alongside existing backends
- SearXNG auto-detected via SEARXNG_URL env var
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