DeepSeek Harness in Five Minutes

What is DeepSeek Harness

DeepSeek Harness (dsh) is an open-source agent harness developed by DeepSeek AI. It is built on an everything-is-a-plugin architecture, powered by Cordis, and released under the MIT license. Tools, model adapters, file access and even the agent loop itself are plugins mounted on a shared context, so you can compose your own agent like building blocks.

It is currently in developer preview: it evolves quickly and breaking changes may land in the future, so keep an eye on releases.

Requirements

  • Node.js: the official way to run it is through npm, so install Node.js first — a recent LTS is recommended.
  • Building from source additionally needs Git and pnpm (with Corepack enabled).
  • An API key to make models work: a DeepSeek API key or any compatible provider.

Install

The simplest way is npx, which starts it directly without any manual install:

npx @deepseek-ai/dsh web

To run the latest development version, contribute, or modify the source, build from the repository:

git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh web

Launch and the Web UI

The terminal prints the access address once started — by default http://127.0.0.1:3080. Open it in a browser to reach the Web UI. dsh web is a shortcut alias for dsh --profile web, which boots the built-in web profile (the dsh-base and dsh-web-app bundles).

First-time setup takes three steps:

  1. Open Settings → Models, enter your DeepSeek API key and save. The model route is available immediately — no restart needed.
  2. Click Select Workspace, add the project directory where you launched dsh, and select it. The session input stays disabled until a workspace is selected.
  3. Start a session and describe your task. The agent can read and edit workspace files, run commands, and delegate subtasks; when an action exceeds the current permission policy, the Web UI asks for your approval first.

The dsh process uses the invoking directory as its default filesystem location, so it is usually best to launch it from your project directory.

Next steps