Skip to the page

dsh-searxng

Run dsh-searxng setup with SpecStream's SearXNG address and your key in it, and DeepSeek Harness's web_search searches through SpecStream's Search API. There is no SearXNG container to run, no Docker, and no engines to keep unblocked.

SpecStream for dsh-searxngCoding agents

What you need

  • DeepSeek Harness (dsh) and Node.js 20 or newer. Docker is not needed with an address of your own.
  • 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

    dsh-searxng takes an address with no query string and no user name or password in it, and adds /search to it by itself. So the key goes in the path, as the address's last part. Put your key in place of YOUR_SPECSTREAM_KEY:

    Address
    https://api.specstream.ai/searxng/YOUR_SPECSTREAM_KEY
  2. 2. Run setup with --url

    Pass the address to setup with --url. With an address of your own, setup never starts Docker. It runs a real search through the address and through the DeepSeek Harness provider, and only then attaches dsh-searxng to the profile. Use the profile name you launch dsh with:

    Terminal
    npx dsh-searxng setup --profile web --url https://api.specstream.ai/searxng/YOUR_SPECSTREAM_KEY
  3. 3. Start dsh with SearXNG as the search provider

    If the profile has more than one search provider, DeepSeek's own included, select this one with DSH_WEB_SEARCH_PROVIDER=searxng, or with searchProvider: searxng on the web row of the profile:

    Terminal
    DSH_WEB_SEARCH_PROVIDER=searxng dsh --profile web
  4. 4. Ask about something recent

    Ask a question about something from this week. The agent's web_search calls go to https://api.specstream.ai/searxng/<key>/search and come back with each result's title, link and text.

What dsh-searxng sends, and what comes back

dsh-searxng sendsSpecStream
GET {baseURL}/searchhttps://api.specstream.ai/searxng/<key>/search, with the key read from the address
q, the agent's querySearched as written. site:, filetype:, after: and the other search operators hold on every result
format=jsonSearXNG's JSON: results[] with title, url and content. publishedDate is null on most results

Where the key is kept

Setup writes the address into the web-search-searxng row of $DSH_HOME/profiles/<name>/cordis.patch.yml, so that file holds your key. Keep it private. To end the key's access, revoke it under API keys in Agents & API in your workspace, and make a new one.

If setup fails

E_AUTH_FAILED means SpecStream got no valid key. Check that the whole key is the address's last part 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.

url must be an absolute HTTP(S) URL without query, fragment, or credentials means the key went in as ?key= or as a user name. Put it in the path as above.

Cost

Each search dsh-searxng sends through the SearXNG address is one Search API call on the fast tier: $1 per 1,000 searches of up to 10 results, a fifth of the default search's $5. Setup's checks run real searches, each charged as one. dsh-searxng serves a repeated query from its own cache for 10 minutes by default, and a cache hit sends no request. Searches come out of your balance, with no quote and no approval. New accounts start with $10 of credit, no card. Questions go to [email protected].

Read pages and get rows too

The same key reads pages with the Extract API at $0.80 per 1,000 pages, and a page with no text is not charged. For a dataset, add SpecStream's MCP server at https://api.specstream.ai/mcp and ask for the records in plain words. Deep Search returns every match as structured rows at 5¢, 15¢ or $1 a row, under a maximum you approve. See MCP.

Remove

Run npx dsh-searxng remove --profile web. It detaches the profile and removes the plugin package from that profile. Then revoke the key in your workspace if you no longer use it.

More

SpecStream for dsh-searxng covers what it does in dsh-searxng 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].