dsh.so

Troubleshooting

Common DeepSeek Harness install and runtime issues, with fixes grounded in the official CLI reference and docs (verified 2026-08-13). Fixes are commands you can copy — nothing here is guessed.

Still developer preview. If a fix below doesn't apply, ask in the official GitHub Discussions — dsh.so is a hub, not a fork; the project itself is the authority.

Installation failures

“Command not found” after npx

npx downloads the package on demand but does not install the dsh binary globally. Re-run npx @deepseek-ai/dsh web (npx resolves it each time), or install globally if you want a persistent dsh command:

zsh — dsh
$ npm install -g @deepseek-ai/dsh
$ dsh --version

npx cache is stale

The preview iterates fast; a cached copy can look outdated or fail to match docs. Clear the npx cache and retry:

zsh — dsh
$ npx clear-npx-cache # or delete the npx cache directory
$ npx @deepseek-ai/dsh web

Network / registry issues (China mainland)

  • Switch npm to a mirror: npm config set registry https://registry.npmmirror.com (same for pnpm).
  • If a proxy is required, ensure HTTP_PROXY/HTTPS_PROXY are set for the shell that runs npx.

Node.js version too old

DSH requires Node.js ≥ 18 (LTS recommended). Check and upgrade:

zsh — dsh
$ node --version
v22.14.0

Boot & port issues

Port 3080 already in use

The Web UI serves at http://127.0.0.1:3080 by default. If another process holds it, the web app accepts a --port flag — the launcher passes app arguments through after its own flags:

zsh — dsh
$ dsh --profile web --port 8080
→ Web UI at http://127.0.0.1:8080
$

The web profile also accepts repeatable --trusted-host flags.

“Profile not found” error

Only web and headless auto-initialize from shipped templates on first use. Any other profile name fails loud with a hint:

zsh — dsh
# error suggests: run dsh plugin --profile <name> add <package>
$ dsh plugin --profile demo add ./hello-plugin

Windows

  • PowerShell execution policy — if a script is blocked, run Set-ExecutionPolicy -Scope CurrentUser RemoteSigned (or use cmd).
  • Spaces in paths — quote paths with spaces: dsh --patch "C:\My Plugins\cordis.yml".
  • Windows launcher — a community dsh-launcher-windows exists; treat it as external (no dsh manifest, not verified by dsh.so).

Config & plugin debugging

Inspect the composed tree without booting

See exactly what your machine would load — every row, and the file that supplied it:

zsh — dsh
$ dsh --profile web --dump-config
# bundle layers only: --dump-default-config
# with your overlay: dsh --profile web --patch ./extra.yml --dump-config
$

--dump-default-config prints only the bundle layers; --dump-config adds the profile's cordis.patch.yml, the home-level $DSH_HOME/cordis.patch.yml, and --patch overlays. Unmatched patch targets are reported on stderr — a common cause of “my plugin didn't load”.

Plugin didn't load

  • Absolute path — a local --patch row referencing a source file needs an absolute path; relative paths resolve against the profile directory, not your cwd.
  • Name resolution — a bundle row references the package by name; if the install was a git checkout without a prepare build, the lib/ output may be missing (see Plugin Development).
  • Config replaced, not merged — a later patch replaces the whole config value of a row; restate every key, not just the changed one.

Headless task exits with code 1

dsh --profile headless "run the tests" prints the final assistant text and exits 0 for completed, else 1. Exit 1 means the task did not reach a completed state — inspect the session log or re-run with more specific instructions.

Where to get help

Join the community

Questions or feedback? Official Discussions is the project’s canonical support channel; Discord has an active community. dsh.so itself improves via plugin submissions and your feedback.