How to Install DeepSeek Harness: One Command or From Source
Install DeepSeek Harness in one line with npx @deepseek-ai/dsh web, or build from source with pnpm. Covers the Web UI at 127.0.0.1:3080.
Prerequisites
You need Node.js installed (the npm package is @deepseek-ai/dsh). For the source build you also need pnpm, because the repo is a pnpm workspace monorepo[1][2].
- Node.js 20+ (check with node --version)
- npm or pnpm for the npx route
- For source builds: pnpm only (the monorepo does not support npm/yarn installs cleanly)[2]
The dsh CLI itself is lightweight; models are billed through the API providers you configure, not through the harness[1].
One-Command Install (npx)
The fastest way to get DeepSeek Harness running is a single npx command that downloads the package and starts the Web UI[1]:
The web subcommand is an alias for --profile web. On first run, dsh auto-initializes the web profile, downloading the default bundles (the Standard coding agent) and creating your profile directory under $DSH_HOME[2].
# install and launch the Web UI in one shot
npx @deepseek-ai/dsh web
# the Web UI is served at:
# http://127.0.0.1:3080Build From Source (pnpm)
If you want to read the code, patch it, or develop plugins, clone and build the monorepo[1]:
The build step matters: production runs expect built artifacts, so skipping pnpm run build produces confusing failures when you launch dsh. The repo uses pnpm workspaces, and build output lands in the packages before the CLI runs[2].
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh webLaunch the Web UI
Both routes land you on the local Web UI at 127.0.0.1:3080. The interface is itself a plugin in dsh's 'everything is a plugin' model, so community skins (dsh-web-ui) and TUIs are drop-in alternatives[2][3].
Port 3080 is the default; if you change it with --port, remember the app-arguments go after the launcher flags[2].
# explicit profile launch (same as 'dsh web')
dsh --profile web
# custom port
dsh --profile web --port 8080
# one-shot headless session (prints the answer, exits)
dsh --profile headless "refactor src/utils.ts and run the tests"Choose a Workspace and Start a Session
dsh uses your launch directory as the default filesystem position. In the Web UI you must explicitly choose a workspace (a project directory) before starting a session — sessions are sandboxed to that workspace[2].
After choosing a workspace, you will be asked to configure a model provider on first session (DeepSeek native or a custom provider). If that step trips you up, the setup guide walks through providers and credentials.
- In the Web UI, use the workspace picker to select the project folder
- The agent can read/write files inside the chosen workspace
- Starting dsh from the wrong directory is the #1 'my files are missing' cause — always confirm the workspace[2]
Verify Your Install
Quick sanity checks after install[2]:
If the Web UI loads but sessions fail with MISSING_CREDENTIAL or UNKNOWN_MODEL, the problem is provider configuration, not the install — see connecting any model and the troubleshooting table there.
- dsh --help prints the launcher help (app args go after launcher flags)
- dsh --dump-default-config prints the composed config tree without starting
- dsh --profile web --port 8080 binds port 8080 without errors
- The Web UI loads a model picker and workspace picker at 127.0.0.1:3080
For everything that can go wrong after install, read common dsh errors and fixes.