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.
What you need
- PicoClaw with its config at
~/.picoclaw/config.json.picoclaw onboardcreates it. - A SpecStream API key. New accounts get $10 of credit on sign up, no card. Get your key on the Search API screen of your workspace.
- 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
/searchtobase_urlby itself, so the address ends with the key. Put your key in place ofYOUR_SPECSTREAM_KEY:base_url - 2
2. Set it in config.json
Under
tools.webin~/.picoclaw/config.json, turn onsearxngwith that address, and setprovidertosearxng. Withoutprovider, 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_nativetofalse. It istrueby default, and then a model with its own search uses that instead of theweb_searchtool. PicoClaw returns at most 10 results per search, whatevermax_resultssays.~/.picoclaw/config.json - 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. 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 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 [email protected].
More
SpecStream for PicoClaw covers what it does in PicoClaw on one page. Every other tool has its guide in Connect your tools. You see the most a request can cost before it starts, and the matches are paid from your balance. Billing has the details. For help, email [email protected].