Open source · MIT · v0.1.5-rc.1

DeepSeek Harness

DeepSeek's local agent harness gives models a plugin-composed body: tools, sessions, permissions, subagents, workflows, and multimodal input. This guide tracks the current release while keeping the official repository and versioned documentation as the technical source of truth.

Run HarnessView sourcev0.1.5-rc.1 · Developer preview

Agent = Model + Harness

Give the model a body built from plugins.

DeepSeek Harness is not just a chat box. It assembles the model, tools, session history, approval rules, workspace access, and delegation behavior into a local coding agent.

License
MIT
Default UI
127.0.0.1:3080
npm latest
0.1.5-rc.1
Historical alpha
0.1.2-alpha.3
terminal
$ npx @deepseek-ai/dsh@0.1.5-rc.1 web

dsh web: http://127.0.0.1:3080

Release snapshot · checked September 10, 2026

npm latest is v0.1.5-rc.1 with native V4.1 Flash

This release adds the official DeepSeek adapter for the exact model ID deepseek-flash. New sessions select it by default, with text and image input enabled natively. Pin the version while the project remains in release-candidate status.

v0.1.0-rc.8 · Multimodal workflow

Release notes

Native image requests can be enabled for compatible models; /goal and /plan accept image input; the @ menu can reference files or sessions; oversized and accumulated historical image payloads are bounded before the model request.

v0.1.1-rc.2 · Files API image handling

Release notes

The DeepSeek adapter now prioritizes Files API uploads, reuses uploaded files, and applies automatic resizing and format conversion based on model requirements. It carries forward the rc.1 vision model and Bubblewrap security fix.

Upgrade note: the rc.8 SQLite storage format is not backward-compatible. Pin the CLI and source tag when repeatable behavior matters, and review plugin, Profile, and stored-session compatibility before replacing an existing installation. The official safety notice says Harness has not been security-audited and its sandbox, approvals, and permissions do not guarantee isolation.

Read the official safety notice

Release status · September 10, 2026 Beijing time

v0.1.5-rc.1 adds native DeepSeek V4.1 Flash

This release candidate includes a first-party DeepSeek adapter with deepseek-flash as the default model for new sessions. It declares both text and image input, keeps system-prompt updates in conversation history, and still allows an explicit model choice to override the default.

  • deepseek-flash accepts native text and image input
  • New Sessions use deepseek-flash by default
  • Arbitrary files can be attached to session messages
  • Custom providers can expose discovered model metadata
Session data written by this release uses the current V3 format. Follow the official migration notes before attempting to read it with an older Harness version.

Choose the release line deliberately

npm latest0.1.5-rc.1

The unversioned quick-start command still resolves to this RC.

default npm tag
$ npx @deepseek-ai/dsh@0.1.5-rc.1 web
historical alpha snapshot0.1.2-alpha.3

This older alpha is retained only for release-history context; use the current npm release for new installations.

pinned preview
$ npx @deepseek-ai/dsh@0.1.2-alpha.3 web
Read the historical alpha.3 release notes

Architecture

The important ideas, without reading the whole monorepo

The V2EX walkthrough is useful because it follows the system from plugin composition to modes, PTC mode, session events, delegation, and governance. The summary below keeps that path but uses the public repository as the factual baseline.

01

Everything is a plugin

Model adapters, the tool registry, the session log, and the agent loop are mounted as Cordis plugins. A plugin can add or replace a capability without patching a privileged core.

02

Four built-in agent presets

Standard, PTC, Minimal, and Creator presets package different tools, prompts, and behaviors. The current Python SDK runtime includes all four presets plus the dependencies needed for rg, glob, and MCP stdio tools.

03

PTC mode

PTC mode exposes tools through a generated TypeScript SDK, allowing the model to combine conditions, loops, parallel calls, filtering, and nested image forwarding in one program.

04

Append-only session log

Model-visible inputs, assistant output, tool calls, and tool results are reconstructed from durable events. MCP and ACP can persist image attachments, while the composer can reference files and earlier sessions through @.

05

Multi-agent workflows

Claude Code and Codex are now optional Profile Bundles. Codex supports non-interactive permission modes and named instances, while reportDelivery can wake the parent task as soon as a child reports back.

06

Sandbox and approvals

Read-only, workspace-write, and full-access policies separate file effects from approval decisions. The v0.1.1-rc.1 security fix also closes a Bubblewrap escape path through /proc/<pid>/root.

Composition model

Profiles stack bundles, then patches

A running dsh process is a plugin tree. A profile selects ordered bundles; profile, home, and command-line patches can then replace or insert configuration rows. Claude Code and Codex now arrive as optional Profile Bundles, so they can be installed only where a composition needs them instead of shipping with the base runtime.

Read the official architecture

Profile

Named composition stored in the Harness home

Bundles

Base, Web UI, headless, Claude Code, or Codex rows

Patches

Profile → home → optional CLI overlay

Cordis plugin tree

Model · tools · session · loop · policies

Agent presets

Four modes, four plugin compositions

Selecting a mode selects the complete tool, prompt, and capability set for the next session. The current release keeps the four-mode model while extending multimodal transport and Windows terminal behavior inside those existing presets.

Standard mode

standard

The full coding agent: file editing, shell, concurrent `web_search`, Skills, planning, goals, subagents, workflows, and image-aware /goal and /plan commands when the selected model supports images.

PTC mode

code

All Standard capabilities, with tools presented through a generated SDK so multi-step work can be composed in TypeScript and nested image attachments can be forwarded.

Minimal mode

minimal

A focused two-tool coding agent with a persistent terminal and str_replace_editor. On Windows, the preset now enables a persistent PowerShell session by default.

Creator mode

cordis

Standard capabilities plus runtime inspection, plugin experiments, and guidance for authoring a custom agent preset.

Quick start

From zero to the first workspace task

The npm path is the shortest way to open the Web UI. Both commands below are pinned to v0.1.5-rc.1; use the moving master branch only when you intentionally want unreleased changes. The older alpha.3 command remains on this page only as release history.

01

Start the Web UI

Install a supported Node.js version, run the version-pinned npm command, and let dsh open the local Web UI at 127.0.0.1:3080.

02

Configure a model

Open Settings → Models and add a DeepSeek API key. For V4.1 Flash, use the exact model ID deepseek-flash; it accepts native text and image input.

03

Choose a workspace

Add the project directory where dsh was started and select it. The session composer stays disabled until a workspace is selected.

04

Run a real task

Create a session, choose a preset, then combine text, screenshots, local files, or an earlier session reference in one request. Image input requires a model declared with inputModalities: [text, image].

Fastest path

Run from npm

npm
$ npx @deepseek-ai/dsh@0.1.5-rc.1 web

The command starts the local Web UI and normally opens a browser automatically. Keep it local unless you intentionally configure a trusted network boundary.

Contributor path

Run from source

source
git clone --branch dsh-v0.1.5-rc.1 --depth 1 https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh web
Check current prerequisites

V4.1 Flash migration

Existing settings need one model update

Run the V4.1-capable Harness build, then select the exact Model ID deepseek-flash. The current DeepSeek adapter already publishes this model as native multimodal, so direct DeepSeek users do not need to add a separate experimental Vision model.

V4.1-capable Harness
$ npx @deepseek-ai/dsh@0.1.5-rc.1 web

Official DeepSeek adapter

Keep the adapter configuration small. In Models, choose provider deepseek-official and model deepseek-flash; its built-in catalog already declares text and image input.

cordis.yml
- name: '@deepseek-ai/dsh-llm-deepseek'
  config:
    apiKeyEnv: DEEPSEEK_API_KEY
    baseURL: https://api.deepseek.com

Custom OpenAI-compatible gateway

A manually declared pi-ai route does not inherit DeepSeek's catalog. Add input: [text, image] to the deepseek-flash model. If every model on that route is multimodal, defaultInput: [text, image] can declare the same capability once at provider level.

cordis.yml
- name: '@deepseek-ai/dsh-llm-pi-ai'
  config:
    providers:
      my-deepseek-gateway:
        displayName: My DeepSeek Gateway
        apiKeyEnv: DEEPSEEK_GATEWAY_KEY
        api: openai-completions
        baseURL: https://gateway.example.com/v1
        defaultContextWindow: 1000000
        defaultMaxTokens: 384000
        models:
          - id: deepseek-flash
            name: DeepSeek V4.1 Flash
            input: [text, image]
            contextWindow: 1000000
            maxTokens: 384000

# If every model on this custom route supports images, you may instead set:
# defaultInput: [text, image]
Do not rename an existing model entry and assume image input is now enabled. Add deepseek-flash as a new entry first, verify a screenshot task, and keep deepseek-v4-flash or deepseek-v4-flash-vision-exp until active sessions have migrated. Settings changes apply to the next request without a Harness restart.

More ways to use Harness

Web UI, one-shot CLI, SDKs, and plugins

Web UI

Local browser interface for sessions, workspaces, model settings, approvals, preset selection, and @ references to files or earlier sessions.

Headless profile

A one-shot runner that accepts a task, prints the final assistant response, and opens no HTTP port.

Python SDK

0.1.1rc1 packages a high-level turns API, a lower-level JSON-RPC client, all four built-in presets, and their search and MCP stdio dependencies.

Plugin development

Build tools, providers, services, events, and presets on Cordis. Use DSH in project names and follow the official registered-trademark guidelines.

Downloads and links

Use the official distribution paths

Use the versioned npm CLI, matching source tag, or separately versioned Python SDK below. The repository master branch continues to move faster than these release snapshots and may contain compatibility-breaking changes.

Looking for a Harness plugin?

Browse the DeepSeek Plugins marketplace to discover tools, providers, integrations, and other plugins for Harness.

Browse plugin marketplace

Sources

Version, install, architecture, and capability claims are grounded in versioned DeepSeek release notes and repository documentation. The supplied WeChat article is retained as the rc.8 editorial reference and cross-checked against those official sources. The earlier V2EX walkthrough remains useful for system context, but unverified anecdotes and ecosystem counts are not repeated as official facts.