Tools

Ollama web search

OpenClaw supports Ollama Web Search as a bundled web_search provider, returning titles, URLs, and snippets from Ollama's web-search API.

Local/self-hosted Ollama needs no API key by default; it requires a reachable Ollama host plus ollama signin. Direct hosted search (no local Ollama) needs baseUrl: "https://ollama.com" and a real OLLAMA_API_KEY.

Setup

If you already use Ollama for models, Ollama Web Search reuses the same configured host.

Local Ollama

  • Start Ollama

    Make sure Ollama is installed and running.

  • Sign in

    bash
    ollama signin
  • Hosted Ollama

    1. Create an Ollama API key and set OLLAMA_API_KEY in the Gateway environment.
    2. Set models.providers.ollama.baseUrl to https://ollama.com; see Config. This is the shared Ollama model-provider host, so it also sends your Ollama model traffic to https://ollama.com instead of a local daemon. To move web search alone, set plugins.entries.ollama.config.webSearch.baseUrl to https://ollama.com and leave models.providers.ollama.baseUrl pointing at your local host.
    3. Run openclaw configure --section web and select Ollama Web Search.

    Hosted search does not require a local Ollama daemon or ollama signin.

    Config

    json5
    {  tools: {    web: {      search: {        provider: "ollama",      },    },  },}

    Optional host override, scoped to web search only:

    json5
    {  plugins: {    entries: {      ollama: {        config: {          webSearch: {            baseUrl: "http://ollama-host:11434",          },        },      },    },  },}

    Or reuse the host already configured for the Ollama model provider:

    json5
    {  models: {    providers: {      ollama: {        baseUrl: "http://ollama-host:11434",      },    },  },}

    models.providers.ollama.baseUrl is the canonical key; the web-search provider also accepts baseURL there for compatibility with OpenAI SDK-style config examples. If nothing is set, OpenClaw defaults to http://127.0.0.1:11434.

    Direct hosted Ollama Web Search (no local Ollama):

    json5
    {  models: {    providers: {      ollama: {        baseUrl: "https://ollama.com",        apiKey: { source: "env", provider: "default", id: "OLLAMA_API_KEY" },      },    },  },  tools: {    web: {      search: {        provider: "ollama",      },    },  },}

    models.providers.ollama.apiKey takes either a literal key string or a SecretRef object. A bare "OLLAMA_API_KEY" string would be sent as the key itself, not read from the environment.

    Auth and request routing

    • No web-search-specific API key field exists; the provider reuses models.providers.ollama.apiKey (or the matching env-backed provider auth) when the configured host is auth-protected.
    • Host resolution order: plugins.entries.ollama.config.webSearch.baseUrlmodels.providers.ollama.baseUrl (or baseURL) → http://127.0.0.1:11434.
    • If the resolved host is https://ollama.com, OpenClaw calls https://ollama.com/api/web_search directly with the API key as bearer auth.
    • Otherwise OpenClaw calls the local proxy endpoint /api/experimental/web_search first (which signs and forwards to Ollama Cloud), then falls back to /api/web_search on the same host. If both fail and OLLAMA_API_KEY is set, it retries once against https://ollama.com/api/web_search with that key — without sending it to the local host.
    • OpenClaw warns during setup if a local Ollama host is unreachable or not signed in, or if hosted search has no API key. These warnings do not block selecting the provider.
    Was this useful?
    On this page

    On this page