hermes-web-search-plus

Hermes Agent plugin: multi-provider web search (Serper, Tavily, Exa, Querit, Perplexity) with intelligent auto-routing

β˜… 28 Python MIT Updated 4/10/2026
View on GitHub β†’

web-search-plus β€” Hermes Plugin

Multi-provider web search with intelligent auto-routing for Hermes Agent.

Ported from web-search-plus-plugin (OpenClaw) to the Hermes Plugin API.


Quick Start

git clone https://github.com/robbyczgw-cla/hermes-web-search-plus.git ~/.hermes/plugins/web-search-plus
cd ~/.hermes/plugins/web-search-plus
cp .env.template .env          # fill in at least SERPER_API_KEY
pip install requests

That's it. Start Hermes and use web_search_plus.


Features


Provider Routing

Provider Best for Free tier
Serper (Google) News, shopping, facts, local queries 2,500/mo
Tavily Research, deep content, academic 1,000/mo
Exa Semantic discovery, "alternatives to X", arxiv 1,000/mo
Querit Multilingual, real-time queries 1,000/mo
Perplexity Direct AI-synthesized answers API key
You.com LLM-ready real-time snippets Limited
SearXNG Privacy-focused, self-hosted, no API cost Free

Auto-routing scores providers based on query signals (keywords, intent, linguistic patterns). Every response includes a routing field explaining why a provider was chosen. Override anytime with provider="serper" etc.


Installation

API Keys

# Required (at least one)
SERPER_API_KEY=your-key        # https://serper.dev β€” 2,500 free/mo
TAVILY_API_KEY=your-key        # https://tavily.com β€” 1,000 free/mo
EXA_API_KEY=your-key           # https://exa.ai β€” 1,000 free/mo

# Optional
QUERIT_API_KEY=your-key        # https://querit.ai
PERPLEXITY_API_KEY=your-key    # https://perplexity.ai/settings/api
KILOCODE_API_KEY=your-key      # Perplexity via Kilo Gateway fallback
YOU_API_KEY=your-key           # https://api.you.com
SEARXNG_INSTANCE_URL=https://your-instance.example.com

Python 3.8+ required. For Exa deep research: pip install httpx (optional).


Usage

Parameters

Parameter Type Default Description
query string required The search query
provider string "auto" Force: serper, tavily, exa, querit, perplexity, you, searxng
depth string "normal" Exa only: normal, deep, deep-reasoning
count integer 5 Results (1–20)
time_range string β€” day, week, month, year
include_domains array β€” Whitelist: ["arxiv.org"]
exclude_domains array β€” Blacklist: ["reddit.com"]

Examples

web_search_plus(query="Graz weather today")
# β†’ auto-routed to Serper (local/weather intent)

web_search_plus(query="alternatives to Notion", provider="exa")
# β†’ Exa (discovery/similarity)

web_search_plus(query="LLM scaling laws research", provider="exa", depth="deep")
# β†’ Exa deep synthesis (4–12s)

web_search_plus(query="OpenAI news", time_range="day")
# β†’ Serper, last 24h

web_search_plus(query="LoRA fine-tuning", include_domains=["arxiv.org"])
# β†’ arxiv only

CLI testing

python3 ~/.hermes/plugins/web-search-plus/search.py \
  --query "test query" --provider auto --max-results 5 --compact

Architecture

__init__.py      β€” Hermes plugin entry, tool schema, handler
search.py        β€” Core engine: providers, routing, caching, fallback
plugin.yaml      β€” Plugin manifest
.env.template    β€” API key reference
CHANGELOG.md     β€” Version history

The plugin runs search.py as a subprocess with a 75s timeout (for Exa deep-reasoning queries).


Related