🤖HermesBlog
Hermes Feature Guides · Part 478/9/2026

Web Search & Extract — AI Surfing the Web

Web Search & Extract — AI Surfing the Web — easy-to-understand guide based on official docs

Web Search & Extract: Giving Your AI Eyes on the Internet

Imagine asking a super-smart assistant to “go find the latest price of that gadget, read the spec sheet, and summarize it for me.” That’s exactly what Hermes Agent can do, thanks to its web search and extract tools. It’s like giving your AI a browser, a highlighter, and a notepad all at once.

Web search & extract: AI’s eyes

The Backend Providers: Your AI’s Choice of Search Engine

Hermes doesn’t rely on just one way to search the web. It supports several different “backends” — think of them as different search engines and page-reading services. You can pick one, or let Hermes automatically choose based on which API keys you have.

Here’s the quick rundown:

Backend What it does best
Firecrawl (default) Searches and reads pages. Great all-rounder.
SearXNG Free, private, self-hosted. Search only.
Parallel Fast, multi-mode searching.
Tavily Optimized for AI agents.
Exa Great for niche searches (papers, news, companies).
OpenAI Native (Codex) Search via a ChatGPT/Codex subscription. Search only.

A few of these are search-only — Brave Search, DDGS, xAI, and OpenAI Native. Pair any of them with an extract-capable backend (Firecrawl, Tavily, Perplexity, Keenable, Exa, or Parallel) when you also need web_extract. DDGS uses the ddgs Python package under the hood; if it isn’t already installed, run python -c "import pm; pm.sync_venv(['ddgs'], explicit=True)" (or let Hermes lazy-install it on first use). Python dependency commands on this page use a PM-prepared source checkout; after a dependency change, reactivate the checkout and restart Hermes. xAI runs Grok’s server-side web_search tool on the Responses API — results are LLM-generated rather than index-backed, so titles, descriptions, and URL choice are all model output. OpenAI Native declares the same kind of provider-executed tool on the Codex Responses endpoint.

About Perplexity: Perplexity’s Search API returns ranked, date-stamped results from Perplexity’s own index for web_search. For web_extract, it uses the same query-relevant snippets route as the official pplx CLI — you get the passages of each page that matter, with elisions marked …, rather than a verbatim full-page dump. Pick Firecrawl / Exa / Parallel as web.extract_backend when you need the whole page. Perplexity is keyed only at Perplexity itself; the managed Nous route (any Nous identity, guests included) serves web_search without a key.

Setting It Up: It’s Just a Config File

You don’t need to write code. Just edit your config.yaml file like this:

web:
  backend: firecrawl  # or searxng, parallel, tavily, exa

Pro tip: You can mix and match! Use a free search backend and a paid extract backend:

web:
  search_backend: "searxng"      # Free searching
  extract_backend: "firecrawl"   # Reliable page reading

The “No-Key” Trick: SearXNG for the Frugal

If you don’t want to pay for an API key, SearXNG is your friend. It’s a free, open-source metasearch engine that queries 70+ search engines for you. Just point Hermes to your own instance:

web:
  search_backend: "searxng"
  # Set this in your environment variables:
  # SEARXNG_URL=http://localhost:8080

Caveat: SearXNG only searches. To actually read the content of a page, you’ll need a separate extract provider (like Firecrawl) set in extract_backend.

Even with no credentials at all, a fresh install still gets working web_search and web_extract: requests rotate round-robin across the keyless free tiers of Exa, Parallel, Firecrawl, and Keenable, and a rate-limited request automatically retries on the next vendor in the ring (multi-hop, until one serves or all fail). A search that a vendor refuses (a 401/402/403 access gate or a 5xx) retries the same way. This tier is strictly last-resort — any configured backend or present API key always wins — and requests carry no user identifiers (only a random per-process session id, rotated on restart). You can disable it entirely with web.keyless_fallback: false. If you turn it off and have no credentials, web tools are unavailable until you configure a provider. Pin one vendor in hermes tools to stop the rotation (the ring is then only used as failover succession on throttles). All free tiers are vendor-rate-limited under burst load, but sustained normal usage goes through fine.

Bonus safety net: if your chosen keyed backend fails a call (bad key, outage, upstream error), that single call automatically retries on the keyless ring instead of erroring. The failover is never sticky — the next call tries your chosen backend again. Turn it off with web.keyless_rescue: false.

Nous subscribers: if you have a paid Nous Portal subscription, web search and extract are available through the Tool Gateway as managed web search — no API key needed. New installs can run hermes setup --portal to log in and turn on all gateway tools at once; existing installs can flip just web via hermes tools. Any Nous identity — any account, including the free tier and anonymous guests — gets managed web_search; extract and the keyless ring are unchanged. Note that a Nous identity (guest included) is unaffected by the web.keyless_fallback switch: managed web_search still applies, though web_extract needs a configured provider.

The Browser: Your AI’s Hands and Eyes

Once your AI finds a page, it needs to “see” it. That’s where the browser settings come in. You can control how it behaves:

browser:
  inactivity_timeout: 120   # Auto-close idle browser after 2 minutes
  command_timeout: 30       # Give up on a page after 30 seconds
  record_sessions: false    # Set to true to record video of the AI's browsing

Advanced tip: If you have your own browser open (like Chrome), you can even connect Hermes to it directly using a special “CDP” link. This lets the AI use your existing logged-in sessions.

Summary & Practical Tip

Hermes Agent’s web tools are like a Swiss Army knife for the internet. You can search, read, and extract information from any page, all through simple configuration. The key is to start with the default (Firecrawl) — it just works. If you hit a paywall or want to save money, switch to SearXNG for searching and pair it with a separate extract backend (like Firecrawl).

My #1 tip: Start simple. Set backend: firecrawl, add your FIRECRAWL_API_KEY, and run a test search. Once you see it working, then experiment with mixing backends to optimize for cost or speed. Happy AI surfing! 🌊

📖 Official Docs

This article is based on the official Hermes Agent documentation:Official docs › user-guide/features/web-search