Installation
Start with terminal-free DSH Desktop, or install Node.js on Windows / macOS / Linux and launch official DeepSeek Harness step by step
This page assumes you are starting from zero. Choose the desktop app first if you do not want to install Node.js or type terminal commands; use the official path below for automation, headless work, or direct CLI control.
Recommended first: DSH Desktop (no terminal)
DSH Desktop is the simplest route for people who want to open a desktop app and get started: it includes the Node.js runtime, so you do not first need Node.js, pnpm, or a terminal window that stays open. Download the installer for your platform, then configure a model through the in-app flow.
Which route should I choose?
Choose Desktop first for a graphical desktop experience, no terminal, or app-managed Harness processes.
Continue with official CLI / Web UI for scripts, CI, SSH/headless work, the latest upstream builds, or complete control over Node.js and profiles.
DSH Desktop is an independent community project, not a DeepSeek product. Read the release notes and verify the relevant checksum before installing; its pinned Harness version and compatibility are defined by its own releases.
Official CLI / Web UI path
Before you install: two concepts
What is Node.js?
Node.js is a runtime that runs JavaScript programs on your machine. DeepSeek Harness is a Node.js program, so Node.js must be installed first. Like a browser, it is an ordinary piece of software you install yourself.
What is npx?
npx is a command that ships with Node.js. It means "temporarily download an npm package and run it, leaving nothing installed behind":
npmis Node.js's package manager (think "app store");npx @deepseek-ai/dsh webmeans: fetch the@deepseek-ai/dshpackage from the npm registry and run itswebentry;- You do not need to
npm installdsh manually first — npx handles the download and caching for you; - On the first run it also initializes the
webprofile and downloads a batch of dependencies, so the first start is noticeably slow (network required); afterwards npx reuses its cache and starts much faster.
Command not found?
If the terminal says 'npx' is not recognized (Windows) or command not found (macOS/Linux), Node.js is not installed yet, or the terminal was not reopened after installing. Complete the steps below first.
Step 1: Install Node.js
The required version is ^22.19 or >=24. Pick your system:
Option A (recommended): the official installer
- Open nodejs.org and download the LTS
.msiinstaller; - Double-click it and accept the defaults;
- Reopen the terminal (PowerShell or CMD) after installing.
Option B: winget
winget install OpenJS.NodeJS.LTSVerify: after reopening the terminal, run
node --versionOutput like v24.x.x or v22.19.x or newer means success.
Step 2: Launch the Web UI
npx @deepseek-ai/dsh webThe default address is http://127.0.0.1:3080. In the current release, a local dsh web launch normally opens the default browser; an SSH or editor-forwarded launch prints the host URL instead. Add --no-open to prevent the browser opening. Seeing web profile initialization and dependency download logs on the first run is normal.
Keep that terminal window open (closing it stops the server), then open the address in your browser.
Headless one-shot tasks
When you don't need a browser, run a one-shot task in headless mode:
dsh --profile headless "Summarize this repository and identify its main packages"Headless mode requires a configured model API key (DEEPSEEK_API_KEY, optionally DEEPSEEK_BASE_URL).
(Advanced) Run from source
For following the latest development or contributing:
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh webLaunch arguments
The dsh launcher parses only its own flags and hands the rest to the booted app:
| Command | Purpose |
|---|---|
dsh --profile <name> | Boot the named profile under $DSH_HOME/profiles/<name> |
dsh --profile headless "job" | Run one fresh persisted session, print the final answer, and exit |
dsh web | Alias of --profile web |
dsh plugin --profile <name> <pnpm args> | Forward plugin management to pnpm in the profile directory |
dsh --dump-default-config / --dump-config | Print the default / composed config tree without booting |
For example, in dsh --profile web --port 8080 the --port belongs to the web app; dsh --help prints the launcher's own help.
Verify the install source
The name "deepseek-harness" was used by third-party projects before the official release. Confirm you install/clone from the official deepseek-ai organization and the @deepseek-ai npm scope, to avoid same-name confusion. For supply-chain and license boundaries, see security & compliance.
Next steps
- After the Web UI is up, walk through the Web GUI quickstart.
- To connect a model, see configure models.
- For more profile tricks, see CLI & profiles.