DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

Web Searxng Search — DSH Plugin for DeepSeek Harness
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins
W

dsh-web-searxng-search

Web Searxng Search

Self-hosted SearXNG web search provider for DeepSeek Harness (ctx.web). No API key, no vendor account.

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:kkgace/dsh-web-searxng-search#82cd8bd2ea355c0065298d32f3acc8e8fa8129cf
READMECompatibilityVersions

Compatibility and provenance

Web Searxng Search is published as dsh-web-searxng-search and currently resolves to version 0.1.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
any
Release source
github
Registry updated
9/17/2026

Versions

0.1.0stable
9/17/2026

Related plugins

Loading related plugins…

Latest
0.1.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
any
License
MIT
Source
github
GitHub
★ 0
Weekly downloads
0
Last push
9/17/2026
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue

Related plugins

More verified plugins in search-research.

Anysearch Dsh@anysearch/anysearch-dshAnySearch web search and fetch providers plus advanced tools for DeepSeek HarnessIndustry Researchdsh-industry-researchIndustry and company research domain pack for DeepSeek Harness: methodology skills, an industry-chain structure model (industry_map), public-source policy/news tracking over ctx.web (industry_track), company scan cards (company_scan), and auditable researZoterodsh-zoteroLet agents search, read, and cite your local Zotero library: find papers, browse notes and annotations, pull evidence by question, open the source document, generate citations.Browser@anweat/dsh-browserSelf-contained browser runtime plugin for DeepSeek Harness (scoped @anweat) — bundles Playwright (chromium) and OpenCLI as plugin-local dependencies (with global-reuse fallback), exposes a `browser` service and interactive browser tools.

README

dsh-web-searxng-search

Self-hosted SearXNG web search provider for DeepSeek Harness.

English | 中文

Points the web_search tool at a SearXNG instance you operate. No API key, no vendor account, no per-query attribution.

Motivation

DeepSeek Harness ships a web search provider backed by the DeepSeek API, so every search is billed and attributed to an API key. This plugin registers a second provider on the same ctx.web seam and switches the seam to it. Search then runs against infrastructure you control and requires no vendor credential.

Features

  • Drop-in WebSearchProvider on the ctx.web seam — the built-in web_search tool keeps working.
  • No runtime dependencies of its own; the official @deepseek-ai/* packages are peer dependencies served by the host.
  • Configurable timeout, language, safe-search level, categories and engine allow-list.
  • Results deduplicated by URL — meta-search engines return the same page more than once.
  • Distinguishes "the instance returned HTML" (JSON format not enabled) from "no results", with an actionable error message.
  • Registration is an effect (ctx.effect), so unload and HMR roll back cleanly.
  • 14 offline unit tests — no network required.

Requirements

ComponentVersion / note
DeepSeek Harness@deepseek-ai/dsh-web 0.1.x
Node.js>= 22.19
SearXNGJSON format enabled (see below)

Enable the SearXNG JSON API

The plugin reads the SearXNG search API. JSON output is disabled by default; without it the instance answers 200 with an HTML page, which the plugin reports as a configuration error rather than as "no results".

# settings.yml
search:
  formats:
    - html
    - json

Verify the endpoint before installing:

curl -fsS 'http://localhost:8888/search?q=test&format=json' | head -c 120

Installation

# from npm
dsh plugin --profile web add dsh-web-searxng-search

# from GitHub
dsh plugin --profile web add github:kkgace/dsh-web-searxng-search

# from a local checkout
dsh plugin --profile web add /path/to/dsh-web-searxng-search

Then restart the web app:

dsh web

Once listed, the plugin can also be installed from Settings → Plugin Market.

Configuration

The bundle ships a working default of http://localhost:8888. Point it at your own instance with a profile overlay — patch the existing row, never insert a new one:

# ~/.dsh/profiles/web/cordis.patch.yml
- id: web-search-searxng
  config:
    baseURL: 'https://searxng.example.com'

Alternatively, set SEARXNG_BASE_URL in the environment dsh runs in.

OptionTypeDefaultDescription
baseURLstringhttp://localhost:8888Root URL of the instance, without a trailing /search.
timeoutMsnumber15000Per-request timeout, 1000–120000 ms.
languagestring—UI language forwarded to the instance, e.g. en-US.
safeSearch0 | 1 | 20Off · moderate · strict.
categoriesstring—Comma-separated SearXNG categories, e.g. general,it.
enginesstring—Comma-separated engine names to narrow the search.
apiKeystring—Bearer token, only if the instance requires one.

How it works

  1. Everything in Harness is a Cordis plugin, and capabilities are exposed as seams. Web search is the ctx.web seam.
  2. The plugin implements the WebSearchProvider contract — id, available(): boolean (local and cheap, never touches the network) and search(req, signal?) — and registers itself with ctx.web.registerSearchProvider(...) inside ctx.effect(...).
  3. Registration alone is not enough: cordis.patch.yml switches web.searchProvider to searxng. Without that step the seam stays on the built-in provider.
  4. Failures are raised as WebError(message, code, { cause }) so the host routes them instead of silently falling back to another provider.

Development

npm test        # node --test tests/*.test.mjs

The tests mock globalThis.fetch and never touch the network. The official @deepseek-ai/* packages are peer dependencies provided by the host; to run the tests outside a Harness profile, make them resolvable from node_modules.

Troubleshooting

SymptomCause / fix
web_search still uses another providerweb.searchProvider does not point at searxng, or dsh web was not restarted.
duplicate loader entry id: web-search-searxng at bootThe profile overlay inserts a row the bundle already inserts. Use the - id: … + config: patch form instead.
"No results" while the instance returns dataJSON format is not enabled on the instance.
WEB_PROVIDER_CONFIGURED_UNAVAILABLEavailable() returned false — baseURL is not an absolute http(s) URL.
WEB_PROVIDER_TIMEOUTThe instance did not respond within timeoutMs.

License

MIT