From 33dc4ec41227a2604fc52912a307f3d1efd7bb4c Mon Sep 17 00:00:00 2001 From: Aqil Aziz Date: Sat, 23 May 2026 07:51:24 +0700 Subject: [PATCH] docs(search): document SearXNG setup (#2435) Co-authored-by: Aqil Aziz --- gitbooks/features/native-tools/README.md | 4 +-- gitbooks/features/native-tools/web-search.md | 30 +++++++++++++++++++- gitbooks/features/privacy-and-security.md | 2 +- 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/gitbooks/features/native-tools/README.md b/gitbooks/features/native-tools/README.md index a905f171c..c1b0146a4 100644 --- a/gitbooks/features/native-tools/README.md +++ b/gitbooks/features/native-tools/README.md @@ -19,13 +19,13 @@ A plugin-only model means tools live in different processes, behind RPC, with th * Consistent error handling. * Zero install friction. * All output passes through [Smart Token Compression](../token-compression.md) for free. -* Predictable security boundary - filesystem tools respect workspace scoping, network tools go through the OpenHuman proxy. +* Predictable security boundary - filesystem tools respect workspace scoping, and network tools use the managed OpenHuman proxy by default unless you opt into a self-hosted path such as SearXNG. ## The toolbelt | Family | What it covers | | ------ | -------------- | -| [Web Search](web-search.md) | Search the live web without bringing your own API key. | +| [Web Search](web-search.md) | Search the live web via the managed proxy, or opt into self-hosted SearXNG. | | [Web Scraper](web-scraper.md) | Pull clean text out of any URL - articles, docs, READMEs. | | [Coder](coder.md) | Read/write/edit/patch files, glob, grep, git, lint, test. | | [Browser & Computer Control](browser-and-computer.md) | Open URLs, screenshot, click, type, move the mouse. | diff --git a/gitbooks/features/native-tools/web-search.md b/gitbooks/features/native-tools/web-search.md index 41487935d..b23ccec5c 100644 --- a/gitbooks/features/native-tools/web-search.md +++ b/gitbooks/features/native-tools/web-search.md @@ -5,7 +5,7 @@ icon: magnifying-glass # Web Search -The agent can search the live web on its own. Backed by a server-side proxy (Parallel) so you don't carry a search API key, the tool returns titles, snippets, and URLs ready to follow up on. +The agent can search the live web on its own. By default this is backed by a server-side proxy (Parallel) so you don't carry a search API key. If you run your own [SearXNG](https://docs.searxng.org/) instance, you can enable `searxng_search` as a private, self-hosted search tool. ## What it's good for @@ -13,11 +13,39 @@ The agent can search the live web on its own. Backed by a server-side proxy (Par * Citation hunting - "find me three sources for Y". * Fact-checking before answering - the agent runs a quick search if it isn't confident. +## Self-hosted SearXNG + +SearXNG search is opt-in. When enabled, OpenHuman registers `searxng_search` for agents and MCP clients. The tool calls your configured SearXNG `/search?format=json` endpoint and returns normalized `{ title, url, snippet, source }` results. + +Enable it in `config.toml`: + +```toml +[searxng] +enabled = true +base_url = "http://localhost:8080" +max_results = 10 +default_language = "en" +timeout_seconds = 10 +``` + +Or via environment: + +```bash +OPENHUMAN_SEARXNG_ENABLED=true +OPENHUMAN_SEARXNG_BASE_URL=http://localhost:8080 +OPENHUMAN_SEARXNG_MAX_RESULTS=10 +OPENHUMAN_SEARXNG_DEFAULT_LANGUAGE=en +OPENHUMAN_SEARXNG_TIMEOUT_SECONDS=10 +``` + +Per call, the tool accepts `query`, optional `categories` (`web`, `news`, `images`), optional `language`, and optional `max_results` up to 50. Empty queries, unsupported categories, non-2xx SearXNG responses, and timeout failures return structured tool errors instead of silently falling back to a cloud search provider. + ## How it differs from generic HTTP A pure `http_request` tool can fetch a URL but can't *find* one. Web Search is the discovery layer: it picks the right URLs for the agent, which then hands them off to the [Web Scraper](web-scraper.md) for the actual reading. ## See also +* [MCP Server](../../developing/mcp-server.md) - how `searxng_search` appears to MCP clients. * [Web Scraper](web-scraper.md) - fetch and clean a specific URL. * [Smart Token Compression](../token-compression.md) - search snippets are compressed before they hit the model. diff --git a/gitbooks/features/privacy-and-security.md b/gitbooks/features/privacy-and-security.md index dc611ec95..2a0c7a837 100644 --- a/gitbooks/features/privacy-and-security.md +++ b/gitbooks/features/privacy-and-security.md @@ -36,7 +36,7 @@ OpenHuman is designed so that the **memory of your life lives on your machine**. | | | | ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **LLM calls** | Proxied through the backend under one subscription, then forwarded to the underlying provider (Anthropic / OpenAI / Google / etc.) per the [model router](model-routing/). | -| **Web search proxy** | The native [web search tool](native-tools/web-search.md) calls a backend proxy so you don't carry a search API key. | +| **Web search proxy** | The native [web search tool](native-tools/web-search.md) uses the backend proxy by default so you don't carry a search API key. If you call the optional SearXNG tool, that query goes to your configured SearXNG instance instead. | | **Integration OAuth & tool proxy** | Token storage and rate-limited request brokering for [118+ integrations](integrations/README.md). | | **TTS streaming** | Hosted [text-to-speech](native-tools/voice.md) audio streams. Audio is generated and discarded - not retained. |