Proposal: add self-hosted Firecrawl to the homelab and wire Hermes web_extract to it #52
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Context
The Hermes agent on the
hermesagenthost uses a self-hosted SearXNG instance (search.pasetto.me) as its web search backend. Search works, but the page-content extraction capability (web_extract) is currently broken: SearXNG is a search-only backend and its plugin reports"SearXNG is a search-only backend and cannot extract URL content."(seeplugins/web/searxng->supports_extract()returns False intools/web_tools.py:881).Because of this, the agent cannot extract/read the full text of web pages - only search snippets - which blocks many workflows (extracting product pages, docs, articles, etc.).
Per the Hermes docs and the error message itself (
tools/web_tools.py:888), the fix is to setweb.extract_backendto a real extract-capable backend: firecrawl, tavily, exa, or parallel.We chose Firecrawl, and - consistent with the rest of the homelab - we want it self-hosted rather than depending on the Firecrawl cloud API.
What Hermes supports
The Firecrawl web plugin (
plugins/web/firecrawl) supports a self-hosted endpoint via theFIRECRAWL_API_URLenv var, alongsideFIRECRAWL_API_KEY:FIRECRAWL_API_URLoverrides the default cloud endpoint (https://api.firecrawl.dev), so the agent talks to our own instance.FIRECRAWL_API_KEYis still required by the plugin's availability check (check_firecrawl_api_key(),plugins/web/firecrawl/provider.py:170).What we need from the NixOS homelab (this repo)
We need to deploy a self-hosted Firecrawl instance as a new container service. Firecrawl is normally run via Docker with several backing services (Redis, Postgres, etc.), so a
docker-compose-style deployment inside our Docker LXC host (seecontainers/) is likely the cleanest fit, consistent with other self-hosted apps in this repo.Acceptance criteria
hermesagenton the tailnet (e.g.http://firecrawl...:3002/v1)FIRECRAWL_API_URL+FIRECRAWL_API_KEYare set in the Hermes.env.web.extract_backend: firecrawlis set in Hermes config.web_extract("https://example.com")returns the page content (no more "search-only backend" error).