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

# AgenticSeek

Point AgenticSeek's web search at SpecStream by changing one line in `.env`. AgenticSeek's own SearXNG search code stays as it is, and the searches run on SpecStream's Search API, so public engines blocking a local SearXNG container no longer stop the agent.

[SpecStream for AgenticSeekAI assistants](https://specstream.ai/integrations/agenticseek.md)

## What you need

-   AgenticSeek, run with Docker (`./start_services.sh full`) or in CLI mode (`uv run cli.py`).
-   A SpecStream key. [Get your key](https://specstream.ai/workspace/search?route=searxng&utm_source=agenticseek&utm_medium=howto) on the Search API screen of your SpecStream workspace. New accounts start with $10 of credit, no card.

1.  1

    ## 1. Set SEARXNG\_BASE\_URL in .env

    In AgenticSeek's `.env`, replace the SearXNG address with SpecStream's, with your key in place of `YOUR_SPECSTREAM_KEY`. Give the address without `/search`: AgenticSeek adds `/search` itself.

    The same line works for both ways of running AgenticSeek. The Docker backend gets it from `.env` through `docker-compose.yml`, and CLI mode reads it at start. The `http://searxng:8080` and `http://localhost:8080` rules in AgenticSeek's README are for the local SearXNG container only.

    The address holds your key. AgenticSeek's `.gitignore` already leaves `.env` out of git; keep it out of anything you share.

    .env

    ```bash
    SEARXNG_BASE_URL="https://api.specstream.ai/searxng/YOUR_SPECSTREAM_KEY"
    ```

2.  2

    ## 2. Restart the backend

    AgenticSeek reads `.env` only when the backend starts. With Docker, run `./start_services.sh full` again. In CLI mode, stop `uv run cli.py` and start it again.

3.  3

    ## 3. Ask a question that needs the web

    Ask something recent, so the web agent has to search:

    In AgenticSeek

    ```text
    Search the web: what changed in the latest PostgreSQL release?
    ```

## What changes and what stays

AgenticSeek's search tool, `sources/tools/searxSearch.py`, is unchanged. It sends each search to `SEARXNG_BASE_URL` plus `/search`, and SpecStream answers in SearXNG's own JSON shape: `results[]` with `title`, `url` and `content`, the fields AgenticSeek reads. The browser agent still opens the pages it picks in its own browser. The local SearXNG container is no longer on the search path.

## Why move off the local SearXNG

A SearXNG instance passes each query on to public engines, and those engines answer automated traffic with CAPTCHAs. In AgenticSeek's [issue #410 (opens in a new tab)](https://github.com/Fosowl/agenticSeek/issues/410), DuckDuckGo and Qwant return CAPTCHAs and Qwant suspends the instance for 86,400 seconds, a full day. AgenticSeek's own error text names the same case: the search engines blocked it.

With SpecStream the search runs on SpecStream's servers, not from your machine's address. The Search API scores 97.9 F-score on all 1,000 SimpleQA Verified questions; scores and method are on the [benchmarks page](https://specstream.ai/benchmarks.md).

## What each search costs

AgenticSeek first posts each search as a form and reads the reply as a SearXNG results page. SpecStream answers that post in JSON, so AgenticSeek finds no results page and asks the JSON API at the same address, which answers. One agent search is therefore two Search API calls.

The SearXNG address runs the Search API's fast tier. Its price per 1,000 calls is on the [pricing page](https://specstream.ai/pricing.md). Calls come out of your balance with no quote, and every call, charged or not, is in your account's request log.

## Limits and errors

-   When the account has used its calls for the minute, SpecStream answers `429` with `Retry-After`. AgenticSeek waits that long and tries again on its own.
-   If AgenticSeek stops with a message that SearxNG refused the search, check the key in the address.
-   If it says it could not connect, check that `SEARXNG_BASE_URL` starts with `https://api.specstream.ai/searxng/` and that the backend was restarted after the change.

## Go back to the local SearXNG

Set `SEARXNG_BASE_URL` back to `http://searxng:8080` for the Docker backend, or `http://localhost:8080` in CLI mode, and restart the backend. Questions: [support@specstream.ai](mailto:support@specstream.ai).

## More

[SpecStream for AgenticSeek](https://specstream.ai/integrations/agenticseek.md) covers what it does in AgenticSeek 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).
