Web Search

Web Search

Web Search

Reeboot includes a built-in web search extension that registers two agent tools:

  • fetch_url — Always available. Fetches any URL and returns clean readable text (Mozilla Readability extraction with HTML-strip fallback).
  • web_search — Available when search.provider is not "none". Returns an array of { title, url, snippet } results.

Providers

ProviderFree TierAPI Key Env VarNotes
duckduckgo✅ UnlimitedNone neededHTML scraping — no account required
brave✅ 2,000/monthBRAVE_API_KEY
tavily✅ 1,000/monthTAVILY_API_KEYOptimised for LLM use
serper✅ 2,500 freeSERPER_API_KEYGoogle results
exa✅ 1,000/monthEXA_API_KEYNeural search
searxng✅ Self-hostedNone neededPrivacy-preserving, requires Docker
noneDisables web_search; fetch_url still works

Configuration

{
  "search": {
    "provider": "duckduckgo"
  }
}

For API-key providers:

{
  "search": {
    "provider": "brave",
    "apiKey": "your-brave-api-key"
  }
}

Or set the environment variable instead of storing the key in config:

export BRAVE_API_KEY=your-key
export TAVILY_API_KEY=your-key
export SERPER_API_KEY=your-key
export EXA_API_KEY=your-key

SearXNG (Self-Hosted)

{
  "search": {
    "provider": "searxng",
    "searxngBaseUrl": "http://localhost:8888"
  }
}

Start SearXNG with Docker:

docker run -d -p 8888:8080 searxng/searxng

If SearXNG is unreachable at startup, reeboot logs a warning. The web_search tool will fail at call time until the server is reachable.


{
  "search": { "provider": "none" }
}

fetch_url remains fully available even when provider is "none".


Configuration Reference

FieldTypeDefaultDescription
search.providerstring"none"Search backend. One of: "duckduckgo", "brave", "tavily", "serper", "exa", "searxng", "none".
search.apiKeystring""API key for the chosen provider (stored in config). Prefer env vars for security.
search.searxngBaseUrlstring"http://localhost:8888"SearXNG instance URL. Only used when provider: "searxng".