> SpecStream is the live web data engine for teams and agents. This is the Markdown copy of https://specstream.ai/docs/integrations/picoclaw. Every page, with what SpecStream does and costs: https://specstream.ai/llms.txt

# PicoClaw

Set PicoClaw's SearXNG `base_url` to SpecStream's address, with your key in it, and the `web_search` tool searches through SpecStream's Search API. There is no SearXNG instance to host or keep unblocked.

[SpecStream for PicoClawAI assistants](https://specstream.ai/integrations/picoclaw.md)

## What you need

-   PicoClaw with its config at `~/.picoclaw/config.json`. `picoclaw onboard` creates it.
-   A SpecStream API key. New accounts get $10 of credit on sign up, no card. [Get your key](https://specstream.ai/workspace/search?route=searxng&utm_source=picoclaw&utm_medium=howto) on the Search API screen of your workspace.

1.  1

    ## 1. Put your key in the address

    PicoClaw's SearXNG settings have no key field, so the key goes in the address. PicoClaw adds `/search` to `base_url` by itself, so the address ends with the key. Put your key in place of `YOUR_SPECSTREAM_KEY`:

    base\_url

    ```text
    https://api.specstream.ai/searxng/YOUR_SPECSTREAM_KEY
    ```

2.  2

    ## 2. Set it in config.json

    Under `tools.web` in `~/.picoclaw/config.json`, turn on `searxng` with that address, and set `provider` to `searxng`. Without `provider`, PicoClaw picks the first ready provider in the order Perplexity, Brave, Kagi, SearXNG, Tavily, Gemini, so a Brave or Perplexity key you already set would win.

    Set `prefer_native` to `false`. It is `true` by default, and then a model with its own search uses that instead of the `web_search` tool. PicoClaw returns at most 10 results per search, whatever `max_results` says.

    ~/.picoclaw/config.json

    ```json
    {
      "tools": {
        "web": {
          "provider": "searxng",
          "prefer_native": false,
          "searxng": {
            "enabled": true,
            "base_url": "https://api.specstream.ai/searxng/YOUR_SPECSTREAM_KEY",
            "max_results": 10
          }
        }
      }
    }
    ```

3.  3

    ## 3. Or set it in the WebUI

    Open **Tools**, then the **Web Search** tab. Under **General**, set **Primary Provider** to **SearXNG** and turn off **Prefer Native Search**. Under **Integrations**, open **SearXNG**, switch it on, paste the address into **Base URL**, and select **Save Changes**.

4.  4

    ## 4. Restart and ask

    Restart PicoClaw, for example `picoclaw gateway`, and ask about something from this week. The search result the agent reads starts with `(via SearXNG)`, and each result carries its title, link and text.

## Keep the key out of config.json

`base_url` is stored in `config.json`, not in `.security.yml`, so the file holds your key. Keep it private, or set the address in the environment PicoClaw runs in instead. Each setting has its own variable:

## What PicoClaw sends, and what comes back

| PicoClaw sends | SpecStream |
| --- | --- |
| `GET {base_url}/search` | `https://api.specstream.ai/searxng/<key>/search`, with the key read from the address |
| `q`, the agent's query | Searched as written |
| `format=json` | SearXNG's JSON: `results[]` with `title`, `url` and `content` |
| `categories=general` | Accepted with no error. It does not change the search |

## Or use the Tavily address

PicoClaw's Tavily provider takes a whole search address in `base_url` and keeps its key in `.security.yml`. Point it at SpecStream to keep the key out of `config.json`. In `config.json`:

## The Tavily key

Then put your SpecStream key in `~/.picoclaw/.security.yml`. PicoClaw sends it as `api_key` in the request body, which SpecStream reads:

## If search fails

`SearXNG returned status 401` means SpecStream got no valid key. Check that the whole key is in the address and that the key can search: a key made with no scopes can read and cannot search. Keys made on the Search API screen can search. If the agent answers without searching, check that `prefer_native` is `false`.

## Cost

Each search PicoClaw sends through the SearXNG address is one Search API call on the fast tier, which costs a fifth of the default search's $5 per 1,000 searches of up to 10 results. A search through the Tavily address is one Search API call too, as [Search API](https://specstream.ai/docs/search-api.md) lists. Both come out of your balance, with no quote and no approval. PicoClaw reads pages itself with `web_fetch`, so there is no page reading charge. New accounts start with $10 of credit, no card. Questions go to [support@specstream.ai](mailto:support@specstream.ai).

## More

[SpecStream for PicoClaw](https://specstream.ai/integrations/picoclaw.md) covers what it does in PicoClaw on one page. Every other tool has its guide in [Connect your tools](https://specstream.ai/docs/integrations.md). You see the most a request can cost before it starts, and the matches are paid from your balance. [Billing](https://specstream.ai/docs/billing.md) has the details. For help, email [support@specstream.ai](mailto:support@specstream.ai).
