Search Guide
Hermes Agent Web Search: Backends, Config, and the OpenClaw Equivalent
Hermes Agent searches the web through two fixed tools and a swappable backend. This guide lists the backends that ship in the box, shows the exact config keys that choose one, and explains how OpenClaw handles the same job so you can move between the two frameworks without guessing.
Two tools, many backends
Hermes exposes web access to the model as two tools in its web toolset:
web_search— returns titles, URLs and descriptions (five results by default). Operators such assite:andfiletype:are passed through to the backend.web_extract— fetches and returns the content of specific URLs.
Neither tool talks to a search company directly. Each vendor is a bundled plugin under plugins/web/ in the upstream repo, and config decides which one serves each tool. That separation is the whole design: you can search with one provider and extract with another.
Backends that ship with Hermes
As of the September 2026 upstream source, these are bundled:
| Backend | What it needs | Search / extract |
|---|---|---|
tavily | TAVILY_API_KEY | Both |
exa | EXA_API_KEY | Both |
firecrawl | FIRECRAWL_API_KEY or a self-hosted FIRECRAWL_API_URL | Both |
parallel | PARALLEL_API_KEY | Both |
perplexity | PERPLEXITY_API_KEY | Both |
keenable | KEENABLE_API_KEY | Both |
searxng | SEARXNG_URL (your own instance) | Search only |
brave-free | BRAVE_SEARCH_API_KEY | Search only |
xai | XAI_API_KEY (Grok’s server-side search) | Search only |
ddgs | Nothing — DuckDuckGo via the ddgs package | Search only |
The list moves between releases, so check the plugins/web/ directory of the version you actually run before relying on a newer entry.
Choose a backend
The easiest path is the interactive picker, which writes the config for you:
hermes toolsOr edit ~/.hermes/config.yaml directly. web.backend sets one provider for both tools; web.search_backend and web.extract_backend override it per tool:
web:
backend: "tavily" # shared default for both tools
search_backend: "searxng" # optional: override for web_search only
extract_backend: "firecrawl" # optional: override for web_extract onlyPut API keys in your Hermes .env, then reload the gateway:
hermes gateway restartA stored choice is used exactly as written, with no availability probe and no silent fallback. If the key is wrong you get that vendor’s error, which is what you want when debugging. Autodetection only runs on an install where no web backend has ever been selected.
Pairing a search-only backend
SearXNG, Brave free, xAI and ddgs return result lists but cannot read page bodies. A common low-cost setup is a keyless or self-hosted search backend plus a separate extractor:
web:
search_backend: "searxng"
extract_backend: "firecrawl"Full setup for each half: Hermes Agent + SearXNG and Hermes Agent + Firecrawl.
The OpenClaw equivalent
OpenClaw does the same job with a different shape. The provider is chosen in openclaw.json under tools.web.search.provider, and each provider’s settings sit in its plugin entry rather than in environment variables. For SearXNG, for example, the endpoint is plugins.entries.searxng.config.webSearch.baseUrl, and the plugin only accepts a plain http URL when the host is a private address.
Do not translate one framework’s config into the other by analogy: Hermes keys are YAML under web, OpenClaw keys are JSON under tools.web and plugins.entries. One SearXNG server can still serve both. See OpenClaw web search for its provider comparison, and OpenClaw + SearXNG for that wiring.
Check that it actually searched
Ask for something the model cannot know from training data, such as a news item from this week. A general-knowledge question is a poor test because the model may answer without calling web_search at all. If results look empty or wrong, set WEB_TOOLS_DEBUG=true; Hermes then writes a per-session debug file under its logs/ directory showing which backend served the call.
OpenClaw Launch hosts the agent runtime; search keys you add stay between you and the provider.
Hermes Web Search FAQ
Does Hermes Agent have web search built in?
Yes. Hermes ships two generic tools, web_search and web_extract, in its web toolset. The tools are fixed; the backend behind them is pluggable, and each vendor is a bundled plugin under plugins/web/ in the upstream repo.
Can Hermes search the web without an API key?
Yes. The ddgs backend (DuckDuckGo via the ddgs Python package) needs no key, and a self-hosted SearXNG instance needs only SEARXNG_URL. Both are search-only, so pair them with an extract-capable backend if the agent must read full pages.
Which backend does Hermes use if I configure nothing?
On an install where no web backend has ever been chosen, Hermes autodetects from your environment: keyed providers such as Tavily, Perplexity, Exa, Parallel, Keenable and Firecrawl first, then SearXNG, Brave free and ddgs. Once you store a choice, Hermes uses it as-is with no fallback, so a broken selection shows the vendor’s real error instead of silently rerouting.
How is this different from OpenClaw?
OpenClaw selects its search provider in openclaw.json under tools.web.search.provider, and provider settings live in the plugin entry rather than in environment variables. The OpenClaw web search guide compares its providers.