DeepSeek Harness, the dsh command, is an agent shell from DeepSeek. It reads and edits project files, runs commands, keeps a task plan and accepts plugins. The code is open under MIT. You install Harness as an app for macOS and Windows or run it in the browser with npx @deepseek-ai/dsh web. What follows: how it is built, installation, connecting models, plugins, MCP and safety.
What DeepSeek Harness is
The README of the deepseek-ai/deepseek-harness repository calls the project an open "agent harness" from DeepSeek AI. The architecture rests on an "everything is a plugin" principle and is built on the Cordis framework: even the model adapter and the agent loop plug in as plugins. The official page calls Harness a public preview, open to the whole world.
According to the same pages, the agent can explore repositories, fix errors, run tests, work with documents, data and slides, and run background tasks. The interface has subagents and a Creator mode in which plugins are written right in the chat. There are experimental blocks too: agent teams, automatic review of approval requests, scheduled tasks, voice input. The web interface is translated into Russian.
Figures as of 29 October 2026:
| Parameter | Value | Source |
|---|---|---|
| License | MIT | GitHub |
| Repository created | 13 August 2026 | GitHub API |
| GitHub stars | over 265 thousand | GitHub API |
npm latest tag | 0.2.1-rc.2 | npm registry |
npm alpha tag | 0.2.2-alpha.2 | npm registry |
| Minimum Node.js version | 24.9.0 | package.json |
The latest tag points to a release candidate, not a final version, which is one more sign of a preview. In its changelog, DeepSeek recommends Harness 0.2.1-rc.1 or newer to get the most out of the V4.1-Flash-1017 model.
How to install DeepSeek Harness
There are four ways. Pick by your task, not by habit.
| Method | For whom | What to do | Requirements |
|---|---|---|---|
| Desktop, macOS | You want an ordinary program | Download Desktop button on deepseek.com/harness | Apple silicon, macOS 13 or newer |
| Desktop, Windows | Same | Same page | Windows, 64-bit |
npx | A quick try in the browser | npx @deepseek-ai/dsh web | Node.js 24.9.0 and newer |
| From source | Writing plugins, changing the core | git clone, pnpm install, pnpm run build, pnpm dsh web | Node.js, pnpm |
The download page has no Linux installer: it lists only macOS on Apple chips and 64-bit Windows. On Linux that leaves npx and a build from source.
Launch through npm:
npx @deepseek-ai/dsh web
The command brings up the web interface at http://127.0.0.1:3080 and opens the browser. If the server starts somewhere with no browser, add the --no-open flag, which turns the auto-open off. Building from source:
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh web
The desktop app can register the dsh command in your terminal, via the Manage dsh Command menu item. Take files only from deepseek.com or from the deepseek-ai organization on GitHub, and take the npm package from the @deepseek-ai scope. A search for "deepseek harness download" also returns third-party builds, and nobody vouches for what is in them.
First run: key, workspace, task
The rest happens in the interface, following the project's documentation. DeepSeek keys are issued at platform.deepseek.com, and the payment details for Russia are covered in DeepSeek API from Russia.
- Open Settings, then Models, find the DeepSeek card and paste the API key. It is stored write-only: the interface gets a masked value back, while the key itself sits in
$DSH_HOME/.credentials.yaml. No restart is needed. - Click Choose workspace and add the project folder. Without a chosen folder, the task input is unavailable.
- Start the session with a harmless request: "Describe the repository structure and the main packages." The agent reads files, runs commands and asks for confirmation wherever the current permission policy requires it.
The model picker has an Effort switch. For DeepSeek models it offers off, low, high and max. For running without the interface there is a dsh --profile headless "task" mode: it runs one session, prints the result and exits.
Plugins and MCP in DeepSeek Harness
Plugins. The Plugins page lists official and experimental plugins. If you enable the experimental Custom plugin indexes package, a Discover tab appears. There you add an index address (a JSON file listing plugins), pick a version and confirm the install. The indexes belong to other people and Harness does not vet the contents of their cards, so connect only sources you trust. To make a plugin findable, its author adds the dsh-plugin topic to the GitHub repository. From the terminal, plugins install with dsh plugin --profile <name> <pnpm arguments>.
MCP. The @deepseek-ai/dsh-mcp-client package handles external servers. No server is enabled by default. A server's tools reach the model's list as mcp__<server_name>__<tool>. Local programs over stdio and services over Streamable HTTP both work. A minimal overlay for a local server looks like this:
- insert:
- id: memory-mcp
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: reference_memory
transport: stdio
command: mcp-server-memory
Save the overlay as memory.cordis.yml. Install the server beforehand, since Harness only launches it, and pass the file at startup with the --patch flag:
npm install --global @modelcontextprotocol/server-memory@2026.7.4
npx @deepseek-ai/dsh web --patch "$PWD/memory.cordis.yml"
What MCP is and how to write your own server is explained in What is an MCP server, and connecting MCP to Claude has its own guide.
Harness with a codexkey key: an OpenAI-compatible address
Harness can take models from any provider. The Add model provider card has a Custom model API mode: you set a provider identifier, a base URL, a protocol (OpenAI Chat Completions, OpenAI Responses or Anthropic Messages), a key and at least one model. The Fetch available models button calls GET /models and pulls in the list.
For codexkey the settings are: base URL https://api.codexkey.online/v1, protocol OpenAI Chat Completions, key sk_cdx_..., model deepseek-v4.1-flash-1017 or deepseek-v4-pro. The same thing can be written into $DSH_HOME/profiles/web/cordis.patch.yml using the schema from the Harness documentation:
- id: llm-pi-ai
config:
providers:
codexkey:
apiKeyEnv: CODEXKEY_API_KEY
api: openai-completions
baseURL: https://api.codexkey.online/v1
models:
- id: deepseek-v4.1-flash-1017
- id: deepseek-v4-pro
Put the key in the CODEXKEY_API_KEY environment variable, not in a file. If Effort set to off does not switch reasoning off, the Harness documentation suggests adding compat.thinkingFormat: deepseek to the model entry. How a gateway passes such parameters depends on the gateway and the model, so test the behavior on a small request.
The codexkey price list for 29 October 2026, per 1M tokens; current figures are on the models page:
| ID | Input | Output | Context |
|---|---|---|---|
deepseek-v4.1-flash-1017 | $0.04 | $0.16 | 1000K |
deepseek-v4-pro | $0.12 | $0.34 | 1000K |
deepseek-v4.1-flash-1017-free | $0 | $0 | 1000K |
For comparison, on its own pricing page DeepSeek charges for deepseek-flash $0.15 for input and $0.6 for output off-peak, and double at peak. The models are covered in more detail in the DeepSeek 4.1 Flash review. Creating a key is described in the quickstart.
Is it free, and is it safe
Harness itself is free: MIT license, no subscription, no license fees. You pay for the model's tokens. DeepSeek's price list has one exception: search and page-fetch calls made through Harness, Claude Code or Codex are free until 00:00 Beijing time on 1 November 2026, and billed after that at $0.75 per 1000 requests. The free model in the codexkey catalog, deepseek-v4.1-flash-1017-free, is good enough for testing a configuration; see the model page for terms. The other options are collected in Free DeepSeek: limits and status.
Safety is stricter than pricing. SAFETY.md is blunt: the project is experimental, has not been through a security audit and should not be considered safe or production-ready. The agent executes code and commands the model generated, and it loads third-party plugins. We would run it like this:
- in a separate virtual machine or container, as SAFETY.md advises, or at least under a separate user account;
- with a working folder that holds no production keys and no spare secrets;
- with a backup of everything the agent can change;
- with plugins and commands checked by hand before the first run.
Sandboxes and consent prompts reduce risk but do not guarantee isolation. For a work project with someone else's code, that is a serious caveat.
FAQ
What is DeepSeek Harness in plain words?
It is an agent program from DeepSeek. You point it at a project folder and give it a task, and it reads the files, edits them, runs commands and shows the result. The model connects by key, and plugins extend what it can do.
How do I download DeepSeek Harness on Windows?
Open deepseek.com/harness and click Download Desktop: the page has a 64-bit Windows build. There is another route: install Node.js 24.9 or newer and run npx @deepseek-ai/dsh web. Don't take files from third-party sites.
Is DeepSeek Harness free?
Yes, the tool itself is free and open under MIT. Models are paid for separately: through the DeepSeek API by token, or through a gateway such as codexkey. Search and page fetch through Harness are free at DeepSeek only until 1 November 2026.
Can I connect a model other than DeepSeek to DeepSeek Harness?
Yes. Custom model API accepts any address compatible with OpenAI Chat Completions, OpenAI Responses or Anthropic Messages. The provider catalog includes anthropic, openai, moonshotai for Kimi and zai for GLM.
Does DeepSeek Harness support MCP and plugins?
Yes. MCP runs through the @deepseek-ai/dsh-mcp-client package, and servers connect over stdio or Streamable HTTP. Plugins install from the Plugins page or with the dsh plugin command, and in Creator mode you can write one right in the chat.
Is it safe to give DeepSeek Harness access to my project?
The project's documentation answers with caution: there has been no security audit and the product is experimental. Run it in an isolated environment, keep backups and leave no production secrets in the working folder.