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

# Ubiquité

Set `endpoint` under `[searx]` in Ubiquité's settings to the SpecStream search address, and its web search and image search run on SpecStream's Search API. There is no SearX instance to run, and no restart.

[SpecStream for UbiquitéAI assistants](https://specstream.ai/integrations/ubiquite.md)

## What you need

-   Ubiquité, running with Docker Compose as its README shows, or from source.
-   A SpecStream key. [Get your key](https://specstream.ai/workspace/search?route=searxng&utm_source=ubiquite&utm_medium=howto) on the Search API screen of your SpecStream workspace. New accounts start with $10 of credit, no card.

1.  1

    ## 1. Open the settings

    In Ubiquité, click the gear at the bottom of the left sidebar. The settings page is an editor that holds the whole `config.toml`.

2.  2

    ## 2. Set endpoint under \[searx\]

    Find the `[searx]` section and set `endpoint` to the whole search address, with your key in place of `YOUR_SPECSTREAM_KEY`. Ubiquité sends its searches to this address as it is, so keep `/search` at the end.

    The key is `endpoint`. Ubiquité's README shows `url` in this section, but the code reads `searx.endpoint`, and so does `config.sample.toml`.

    config.toml

    ```toml
    [searx]
    endpoint = "https://api.specstream.ai/searxng/YOUR_SPECSTREAM_KEY/search"
    verify = true
    ```

3.  3

    ## 3. Save

    The editor saves on its own a moment after you stop typing, or press Ctrl+S (Cmd+S on a Mac). The status reads **Saved**. A file that is not valid TOML is refused and not saved.

    You can edit `config.toml` on disk instead. With Docker it is the file next to `docker-compose.yml`, mounted into the backend at `/app/config.toml`.

4.  4

    ## 4. Ask a question

    Ubiquité reads `config.toml` again for every request, so the next question already searches with SpecStream. Ask something recent and check that the answer cites the pages it found:

    In Ubiquité

    ```text
    What changed in the latest PostgreSQL release?
    ```

## What changes and what stays

Ubiquité's `search_searx` tool is unchanged. It sends `GET` to `endpoint` with `q`, `language` and `format=json`, and reads `title`, `content` and `url` from each result. SpecStream answers in SearXNG's JSON shape, so the model gets the same fields, from a search run at that moment.

Image search uses the same `endpoint` with `categories=images`. SpecStream answers with image results in SearXNG's shape, `img_src` included, and Ubiquité's reranker orders them as before.

A focus adds its conditions to the query, like `site:reddit.com` in the sample Reddit focus. SpecStream applies `site:` to each result it returns.

The map tool is separate: it still looks up places with the geocoder in `[nominatim]`.

## Why not a public SearX instance

Ubiquité's README points to [searx.space (opens in a new tab)](https://searx.space/) for a public instance. Ubiquité asks for `format=json`, and SearXNG's [search API docs (opens in a new tab)](https://docs.searxng.org/dev/search_api.html) say that requesting a format the instance has not turned on returns 403 Forbidden, and that many public instances have these formats turned off. Running your own means a container, a `settings.yml` with JSON turned on, and public engines that can answer its traffic with CAPTCHAs.

With SpecStream there is no instance: the search runs on SpecStream's servers and answers in the JSON Ubiquité reads.

## What it costs

Each time the model calls `search_searx`, that is one Search API call of up to 10 results. The SearX address runs the Search API's fast tier, at $1 per 1,000 searches of up to 10 results.

Images load when you open them on an answer, and Ubiquité keeps them with the message. An image search returns SearXNG's full page of up to 100 images and is charged like a fast search of that many results. The [pricing page](https://specstream.ai/pricing.md) has the rate.

Searches come out of your balance with no quote and no approval, and every call, charged or not, is in your account's request log.

## Limits and errors

-   If answers come back with no sources, check the key in `endpoint`. A reply that refuses the key holds no `results`, so Ubiquité has nothing to cite.
-   Your model keys already sit in `config.toml` in plain text, and the settings page shows the file to anyone who can open Ubiquité. The SpecStream key sits beside them, so keep the app on a network you trust.

## Go back to SearX

Set `endpoint` back to your instance, for example `http://host.docker.internal:6001` from the sample file. Questions: [support@specstream.ai](mailto:support@specstream.ai).

## More

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