What is a DSH plugin? DeepSeek Harness Plugin Ecosystem
A DSH plugin is the extension unit of DeepSeek Harness: a TypeScript module that exports an apply function. It turns models, tools, UI, and skills into pluggable capabilities, and installing it into a profile only affects that profile's environment.
Overview
This guide answers three questions: what a DSH plugin actually is, which centers and marketplaces exist in the plugin ecosystem, and how to obtain and install plugins. For a concrete picture: connecting a local model is a model plugin, adding commands to the terminal is a tool plugin, and restyling the Web UI's layout and theme is an interface plugin — all of them share the same apply module shape. To learn about the DeepSeek Harness host itself, see What is DeepSeek Harness.
What a DSH plugin is: the extension unit of an everything-is-a-plugin architecture
A DSH plugin is a TypeScript module that exports an apply function. The framework calls apply with a ctx context when loading, and the plugin registers capabilities through ctx (source). In DeepSeek Harness's everything-is-a-plugin architecture, model access, tools, UI, skills, MCP services, hook policies, protocol bridges, sub-agents, and even full distributions all plug in through plugins — nothing is hard-coded into the core.
The minimal form of a plugin is only a few lines; the entry point is apply (source):
// The simplest possible DSH plugin
export const apply = (ctx) => {
ctx.logger.info('plugin loaded');
ctx.command('hello', 'say hello').action(() => 'Hello, DSH!');
};
At startup the framework loads plugins in dependency-tree order: it resolves the profile's dependency declarations first, then calls each plugin's apply(ctx), and the plugin registers commands, services, UI components, or hooks on ctx. What you see as "the plugin is installed" is exactly those registrations hanging off the running runtime. ctx is the only interaction surface between a plugin and the host — reading config, writing logs, dispatching commands, and calling services all go through it, which is why the docs stress that understanding ctx means understanding how plugins work.
A plugin names itself with name, declares dependencies with inject, and accepts config with a Config schema. Installing into a profile only affects that environment: the built-in web and headless profiles do not interfere with each other. Plugins ship with a project in two forms — an npm package or a GitHub reference; after installing, dsh --dump-config shows what the plugin registered in the merged config tree. The same plugin installed in web and headless runs as two independent instances that do not affect each other.
The DSH plugin ecosystem: centers and marketplaces
There are four channels for getting DSH plugins: a community marketplace, the website plugin center, GitHub, and npm. Meet each one:
- DSH Plugin Hub (community marketplace): a community plugin marketplace DSH plugin built by the dsh-plugin.org team, embedded under Settings → Plugin Center, listing 4,401 human-curated plugins, syncing with the website daily — browse, search, and one-click install/upgrade/uninstall without leaving the app (source). For details, see DSH Plugin Hub marketplace intro and install.
- dsh-plugin.org website plugin center: browse community plugins by category in a browser; every detail page carries an install command you can copy.
- GitHub: install via a
github:owner/reporeference — great for reading source code and trying unreleased plugins. - npm registry: install published plugins by package name directly.
Note: both dsh-plugin.org and DSH Plugin Hub are community-maintained projects with no affiliation to DeepSeek AI (source). Every plugin detail page in the Hub states its source (npm or GitHub) and the compatible DSH version — check the version before installing; newly listed plugins show an unconfirmed verification status that flips to verified after manual review, which is worth watching when picking plugins.
The four channels are not mutually exclusive — pick by scenario: for everyday discovery the Hub takes the least effort and also shows verification status and compatible versions; to confirm a plugin's real source, the website detail page is authoritative; to try unreleased preview builds or to distribute a plugin you wrote yourself, use a GitHub reference; for stability, choose the version released on npm. The Hub's source labels and version notes exist precisely to help you judge between these channels — a glance before installing avoids most "installed but does nothing" surprises.
How to get and install DSH plugins
One command covers all installs: dsh plugin --profile web add <package-or-address>. Matching the channels above, there are four ways:
- From the website plugin center: open a plugin detail page, copy the install command, and run it in your terminal.
- From DSH Plugin Hub: click install in the plugin center; a dialog shows live progress and the plugin takes effect once done.
- From GitHub:
dsh plugin --profile web add github:owner/repo. - From npm:
dsh plugin --profile web add <package>.
Before installing, confirm three things to keep most failures out: the DSH core is running so the web profile is initialized; your network can reach the npm registry or GitHub — if downloads are slow or time out, see Speed up DSH plugin downloads with a mirror or proxy; and, when installing from the Hub, the plugin's compatible DSH version matches your core version.
The prerequisite is a working DSH core (npx @deepseek-ai/dsh web) so the web profile is initialized before installing plugins (source). For command details, see How to install DSH plugin. After installing, run dsh plugin --profile web list to confirm the plugin is listed and dsh --dump-config to confirm the config took effect; for install-time errors (download failures, permission issues, etc.), see Fix DeepSeek Harness Install Errors.
Next steps
If you have not installed DSH yet, start with How to install DeepSeek Harness; once installed, pick a few plugins from the DSH Plugin Hub plugin center. To write your own, see How to develop DSH plugin.
Source: official docs - Your first plugin, dshplugin/dsh-plugin-hub, dsh CLI README
FAQ
It is a TypeScript module that exports an apply function: the framework calls apply with a ctx context when loading, and the plugin registers capabilities through ctx. In the everything-is-a-plugin architecture, models, tools, UI, and skills all plug in this way.
Mainly three: the DSH Plugin Hub community marketplace (embedded in the app, 4,805 plugins), the dsh-plugin.org website plugin center (browse by category in a browser), and the GitHub and npm repositories themselves.
One command: dsh plugin --profile web add <package-or-address>. Copy the install command from a plugin detail page, click install inside DSH Plugin Hub, or write a github: reference or an npm package name directly.
None. Both DSH Plugin Hub and dsh-plugin.org are community-maintained projects; every listed plugin shows its compatible version and manual verification status, with traceable sources.
Sources
- DeepSeek Harness documentation - Your first plugin· deepseek-harness
- dshplugin/dsh-plugin-hub· dshplugin
- dsh CLI README· deepseek-ai