Introduction¶
The web profile of DeepSeek Harness (DSH) provides a web search seam called ctx.web. DSH’s philosophy is “everything is a plugin”; in this plugin ecosystem, dsh-web-search-searxng is a standalone SearXNG-backed web search provider.
It solves a specific problem: if you already have a self-hosted SearXNG and want DSH’s web_search to call your own SearXNG instance instead of relying on an external API, you can install this plugin directly.
What is it¶
dsh-web-search-searxng is an installable DSH plugin package targeting the DeepSeek Harness web profile (ctx.web).
The repository address is https://github.com/d3cker/dsh-web-search-searxng. It is declared in package.json as:
name:dsh-web-search-searxngversion:0.2.0license:MITtype:module
It is a DSH plugin package, not part of DSH core functionality.
Core Capabilities¶
The following capabilities are verified information from the README and package.json:
- Provides a standalone SearXNG backend web search provider for
ctx.web. - Pure ESM, no build steps.
- Published as a bundle; can be installed and automatically activated with a single
dsh plugincommand. - After installation, it switches the web seam to the
searxngprovider and mounts the plugin row. - Supports configuring the SearXNG instance address via
SEARXNG_BASE_URL, defaulthttp://localhost:8888. - Supports optional configuration
SEARXNG_NUM_RESULTSandSEARXNG_API_KEY. - Exposes a
web-search-searxngsettings section; the Settings card requires changes on the harness side to be usable. - Uses
vitestto run tests; README records 20 tests.
Installation & Activation¶
The installation command given in the README is:
dsh plugin --profile web add /path/to/dsh-web-search-searxng
/path/to/dsh-web-search-searxng is a placeholder path; replace it with your local plugin directory.
After execution, the plugin enters DSH’s web profile and activates automatically. The result described in the README is: the web seam switches to the searxng provider, and the plugin row is mounted.
Configuring the SearXNG Instance¶
The most common method is to set environment variables:
export SEARXNG_BASE_URL=http://192.168.30.74:8888
Then start or restart dsh web in that shell:
dsh web
The default value of SEARXNG_BASE_URL is http://localhost:8888.
If the SearXNG instance requires an API key, you can set:
export SEARXNG_API_KEY=your-key
SEARXNG_API_KEY is optional configuration, used only for instances that require a key.
SEARXNG_NUM_RESULTS is also an optional configuration item, used to configure the number of results.
If you don’t want to use environment variables, an alternative in the README is to edit cordis.patch.yml in the bundle and modify the default value of the baseURL line:
baseURL: !!js process.env.SEARXNG_BASE_URL ?? 'http://localhost:8888'
Change http://localhost:8888 to the actual instance address.
Verifying the Search¶
The verification method given in the README is to call:
web_search("postgresql vs mysql")
If configured correctly, it should return aggregated results from your SearXNG instance.
Settings Card (Optional)¶
The plugin exposes a web-search-searxng settings section. To edit these fields in DSH’s Settings → Plugins, changes on the harness side are required.
The changes listed in the README include:
- Expose the
web-search-searxngnamespace. The location given in the README ispackages/host/apiproxy/src/api-proxy.ts; add this namespace toWEB_SETTINGS_NAMESPACES:
const WEB_SETTINGS_NAMESPACES = [
'agent-loop', 'shell', 'locale', 'permission', 'ui-conversation', 'ui-theme',
'web-search-deepseek', 'web-search-searxng',
] as const
- Render the card in
packages/client/ui-settings-plugins. The README mentions addingSearxngCard/SearxngCardController, registering them in thesettings.plugin.itemslot ofindex.ts, and addingsearxng*locale keys.
Afterwards, you need to rebuild the web artifacts and restart the GUI. The commands given in the README:
pnpm run build:lib:host
pnpm run build:lib:client
pnpm run build:web
Without these changes, search is still usable; configuration can only be done via environment variables or cordis.patch.yml.
Applicability & Notes¶
Suitable for:
- Already have a self-hosted SearXNG and want DSH’s
web_searchto use your instance. - Want a pure ESM plugin package with no build steps.
- Prefer configuration via environment variables or
cordis.patch.yml.
Note:
- The plugin runs with the permissions of the current
dshprocess. You should check the source code,package.json, dependencies, and license before installing. package.jsondeclares thelicenseasMITand theversionas0.2.0.SEARXNG_API_KEYis optional configuration; only applies to SearXNG instances that require a key.- The Settings card is not provided solely by the plugin; it requires harness-side changes, rebuilding, and restarting the GUI.
Links¶
GitHub: https://github.com/d3cker/dsh-web-search-searxng