Fix slow DSH plugin market downloads with an npm mirror

TroubleshootingPublished 2026-10-01Author: DeepSeek Plugin Market
DeepSeek HarnessDSH pluginplugin marketslow downloadinstall failurenpm mirror
Slow or half-finished DSH plugin installs come from three causes: a slow network, a lagging npm mirror, or native dependencies compiling. Match the cause first.

A slow or half-finished DSH plugin install has three possible causes: a slow route to the registry, a lagging npm mirror, or a plugin whose native dependencies must compile. The symptoms look alike but the fixes differ, so this guide classifies first, then configures mirrors and proxies, then retries cleanly and verifies.

Step 1: classify the DSH plugin install symptom first

When an install fails, the line where the output stops tells you which class of problem you have. The comparison:

SymptomOutputCauseSection
Slow but eventually succeedsProgress crawls forwardSlow route to the registryMirrors
Fails immediately with 404ERR_PNPM_FETCH_404 presentMirror sync lag, package absentSwitch source
Stalls, or gyp/make errorsStops at the build stepNative dependency build failsToolchain

For a full reading of that error code see DSH plugin install failure: ERR_PNPM_FETCH_404; this article only handles slow and interrupted installs.

Step 2: configure mirrors and proxies for DSH plugin installs

Mirror and proxy settings live in .npmrc, and because dsh plugin installs are driven by pnpm, which reads the same file, one change covers both entry paths (source). Five steps:

  1. See which source is in use — run npm config get registry. Expected: it prints the current registry, so you can tell whether a mirror is configured.
  2. Switch to a faster mirror — run npm config set registry https://registry.npmmirror.com. Expected: the next plugin install downloads noticeably faster.
  3. Override the source for one install — append a flag instead of changing global config:
bash
dsh plugin --profile web add <package> --registry=https://registry.npmjs.org

Expected: that install uses the named source; use this to check whether the official registry really has the package when you see a 404. npm_config_registry=https://registry.npmjs.org dsh plugin --profile web add <package> does the same for one command.

  1. Go through a proxy on a corporate network — run npm config set proxy http://127.0.0.1:<port> and npm config set https-proxy http://127.0.0.1:<port>. Expected: installs stop timing out; HTTP_PROXY / HTTPS_PROXY environment variables scope the same setting to one shell.
  2. Confirm the proxy allows plugin source domains — both the npm registry and GitHub must be reachable. Expected: github:owner/repo sources no longer stall while fetching.
DSH Plugin Hub settings: the update section holds the npm mirror dropdown and the proxy address input

Clicking Install in the plugin market follows the same fetch path, so a corrected mirror and proxy speed up the interface too.

Step 3: retry the DSH plugin install after cleanup and verify

When an install fails halfway, uninstall rather than deleting directories, so declarations and files stay in agreement. Four steps:

  1. Remove the failed entry — run dsh plugin --profile web remove <package>. Expected: the command returns successfully and the profile's dependency record no longer lists it.
  2. Confirm you are on the right profile — run ls "$DSH_HOME/profiles". Expected: it matches the profile you intended, so the reinstall does not land elsewhere.
  3. Reinstall against the new source — run dsh plugin --profile web add <package>. Expected: it completes in a reasonable time without stalling.
  4. Verify in two places — run dsh plugin --profile web list, then check Settings → Plugin Market → Installed. Expected: both show the plugin and agree on the version.
DSH Plugin Hub plugin market

The installed list in the plugin market is the final judge; the command output has to agree with it. See using the plugin market for browsing and versions.

Notes and limits for slow DSH plugin installs

  1. Mirrors are fast but lag: a freshly published plugin or version may be missing from a mirror and fail with an immediate 404; the test is whether the official registry lists the same name.
  2. Proxies must allow two kinds of domains: both the registry and the plugin source, such as GitHub, have to be reachable or the install stalls halfway.
  3. Do not delete directories instead of uninstalling: manual deletion leaves declarations and files out of sync; use remove and add.
  4. A build stall is not a network problem: gyp or make output means a toolchain issue, so switching mirrors will not help.
  5. Classify before acting: slow, 404 and build stalls need different fixes, and blind reinstalls repeat the same mistake.

Sources: dsh CLI README, npm .npmrc configuration, dshplugin/dsh-plugin-hub

FAQ

DSH plugin downloads are very slow in the plugin market. Is the plugin itself at fault?

**A slow DSH plugin download in the plugin market is usually not the plugin's fault — the fetch path is.** A slow DeepSeek Harness plugin install comes from one of three layers: a slow route from your machine to the registry, a lagging npm mirror, or a plugin with native dependencies that must compile locally. Decide first whether it is merely slow or truly stuck.

A DSH plugin install stalls halfway. What should I look at first?

**When a DSH plugin install stalls halfway, look at the last few lines of output to see which stage it stalled on.** An install that stalls while downloading points at network or mirror settings, one that stalls with gyp or make keywords is compiling native dependencies, and one that stalls on authentication points at a proxy or private registry misconfiguration.

How do I change the npm mirror used for DSH plugin installs?

**Set the DSH plugin install mirror in .npmrc, where both npm and pnpm read it.** Run npm config set registry https://registry.npmmirror.com to change the default mirror, or append --registry=https://registry.npmjs.org to a single install to override it once. The npm_config_registry=... environment variable does the same for one command.

My network requires a proxy. How do I make DSH plugin installs use it?

**To make DSH plugin installs use a corporate proxy, configure npm's proxy and https-proxy, or use environment variables.** Run npm config set proxy http://127.0.0.1:<port> and npm config set https-proxy http://127.0.0.1:<port>, or export HTTP_PROXY / HTTPS_PROXY for the current shell only. The proxy must allow both the registry and the plugin source domains, or installs still time out.

After changing the npm mirror a DSH plugin install still fails. How should I retry?

**If a DSH plugin install still fails after changing the mirror, uninstall first and reinstall rather than deleting directories by hand.** After an install fails halfway, run dsh plugin --profile web remove <package> to clear the entry, then rerun add against the new mirror. Deleting node_modules manually leaves dependency declarations and files disagreeing, which makes verification harder.

Related Terms

npm registry mirror
An npm registry mirror is a replica of the npm package registry; the official source is registry.npmjs.org, and domestic mirrors are often used for speed. It is controlled by the registry key in .npmrc, which npm and pnpm share, so one change applies to both.— npm Docs - .npmrc configuration
.npmrc
.npmrc is npm's configuration file holding keys such as registry, proxy and https-proxy. Because dsh plugin installs are driven by pnpm, and pnpm reads the same .npmrc, this is where mirror and proxy settings for plugin installs belong.— npm Docs - .npmrc configuration
ERR_PNPM_FETCH_404
ERR_PNPM_FETCH_404 means pnpm received a 404 while fetching from the configured mirror, so that mirror does not carry the package or version, which usually indicates sync lag. It is a source problem rather than a slow network, and the fix is to switch sources.— dsh CLI README
native dependency build
A native dependency build happens when a plugin includes C or C++ extensions that must be compiled on the local machine. It is slow and fails easily without a toolchain, showing up as a long stall or as gyp or make errors.— dsh CLI README

Sources