Skip to content

Agent web search

web_search looks up public pages for the interactive agent. web_fetch then reads a known HTTPS URL. Search never invents a URL; fetch never discovers one.

Default: DuckDuckGo

On a fresh machine, web_search uses DuckDuckGo Lite. There is no API key and nothing to run locally. Results are untrusted reference data: the agent must not follow instructions found in titles or snippets.

DuckDuckGo is the default unless you selected another provider after this default shipped. A leftover local SearXNG from an older keryx is not kept as the active engine — /search-connect searxng if you still want it.

It is not a fallback. If you connect Brave and that key later fails, web_search asks you to reconnect Brave rather than switching engines. The agent cannot change the engine; only /search-provider and /search-connect can.

Other providers

/search-provider configures and tests a provider. /search-connect makes a tested provider active.

Provider Needs Notes
DuckDuckGo nothing Default. Public HTTPS only.
Brave Search API API key Remote JSON API.
Tavily API key Remote JSON API.
Exa API key Remote JSON API.
SearXNG a loopback instance you run See Use local SearXNG.

In the TUI, /search-provider with no arguments opens a wizard. DuckDuckGo has no fields and no key; keyed remotes ask for a credential; SearXNG asks for host and port.

Switching back to DuckDuckGo

/search-connect duckduckgo selects it without a prior connection test.