DeepSeek

DeepSeek Harness

everything is a plugin

9 min readAgentic AI

Editorial illustration: the DeepSeek Harness headline over a socket board of interchangeable plugin cards labelled model, tools, skills, sessions, sandbox, storage, loop, scheduling and UI, one lifted out mid-swap

Key facts

MITopen source
Licence
0.1.0-rc.6developer preview
Version
130,449on 16 August
Stars
133in a default install
Plugins
dshnpm, TypeScript
CLI
16 Aug 2026run locally
Checked

Most agents ship as one fixed program. DeepSeek Harness ships as a socket board: the model, the tools, the storage, the loop and the interface are all separate plugins, and you replace any of them from config. Running it, the settings panel lists 133 of them with a switch on each.

DeepSeek published Harness on 13 August 2026 and the repository took 130,449 stars in three days. The repository description is the whole design: “DeepSeek Harness: Everything is a Plugin.” Where most agents ship as a single program with a fixed loop, a fixed set of tools and a fixed interface, Harness ships as a socket board. The model is a plugin. So are the tools and skills, the sessions and storage, the sandbox, the scheduling, the interface, and the agent loop itself.

It is MIT licensed, written in TypeScript, and explicit about its maturity. The README carries the warning in capitals: “DeepSeek Harness is currently in developer preview and is iterating rapidly. THERE WILL BE COMPATIBILITY-BREAKING CHANGES.

We installed release candidate 0.1.0-rc.6 on 16 August and ran it. Everything below is from that install rather than from the announcement.

What you actually see on first run

Installing takes one command, npx @deepseek-ai/dsh web, which serves a browser interface on http://127.0.0.1:3080. The first thing it does is stop you.

Screenshot of the DeepSeek Harness web interface on first run, showing the deepseek Harness wordmark, a sidebar with New Session, Workspaces, No sessions yet and Settings, and a modal headed Internal Testing Notice with a Continue button
The first thing Harness shows you, run locally on 16 August 2026. The notice is the product's own account of how finished it is.

The modal is worth reading rather than clicking past, because it is a franker statement of readiness than a launch page tends to give:

“DeepSeek Harness 0.1 remains in testing for Harness developers. Many areas need further improvement, and we welcome feedback from the developer community. DeepSeek Harness’s core plugins and foundational APIs will continue to evolve rapidly over the coming months.”

DeepSeek Harness, first-run notice

The setting that records your dismissal is stored as welcomeNoticeVersion: 2026-08-13.1, which dates the notice to the day of release.

A second dialogue follows it: “Add an API key to get started”, offering to configure the official DeepSeek provider. There is a “Configure later” button, and taking it is instructive, because it shows what Harness is. No model ships inside it. The harness is the frame; the intelligence is a plugin you supply.

Screenshot of the DeepSeek Harness setup dialogue headed Add an API key to get started, reading Configure the official DeepSeek provider to start building, with an API key field and buttons for Configure later and Save and continue
No model is bundled. The provider is the first plugin you configure, and the harness runs without one.

Behind both dialogues sits a workspace shell: a session list, a workspace picker, a mode selector reading “Standard mode”, and settings. The composer is inert until you pick a workspace, and its greeting carries a “Preview” badge.

Screenshot of the DeepSeek Harness shell showing the sidebar with New Session and Workspaces, the greeting Into the Unknown with a Preview badge, a Choose workspace control, a Standard mode selector, and a composer reading Choose a workspace to start
The shell with both dialogues cleared. Work is scoped to a workspace before the agent will accept a prompt.

Everything is a plugin, and here is the count

DeepSeek’s own page names the layers it treats as plugins: models, tools, skills, sessions, sandboxes, storage, loops, scheduling and the UI. The claim is easy to make and unusually easy to check, because the settings panel exposes the register.

A default install carries 133 plugins, each listed with a switch.

Screenshot of the DeepSeek Harness settings panel on the Plugin list tab, headed Plugins, Configure and inspect the plugins installed in this deployment, with a search box and a count of 133, listing include, timer, hmr, llm, session, typert-registry, typert-loader, api-gateway and others, each marked Enabled or Disabled
The register, in a default install on 16 August 2026. Every entry has a state, and the states are not all the same.

Read down that list and the architecture stops being a slogan. llm, session, sandbox-local, bash-sandbox, user-approval, permission-presets, skill, goal, plan-mode, token-meter, compaction-basic: each of the things another agent hard-codes is a named, separately switchable component. Several ship disabled, plan-mode and tool-fs among them, because the running preset decides which ones load.

The neighbouring tab is the sharper evidence. Under “Plugin configuration” sit three cards, and the middle one is the whole argument.

Screenshot of the DeepSeek Harness Plugin configuration tab showing three configurable plugins: Shell, described as Limits every command the agent runs; Agent loop, described as How the agent dispatches tool calls; and Web search, described as The DeepSeek search provider
The agent loop, the part that decides what happens next, sits in a settings panel between the shell and the search provider.

Every layer below is a plugin rather than a fixed part of the program, which is what the second column is for.

Layer What swapping it buys
Model A different provider without a rewrite
Tools and skills Capability added per project
Session and storage Your own persistence and memory
Sandbox Where the agent is allowed to run
The agent loop A different control flow entirely

The last row is the unusual one. Plenty of agents let you change the model and add tools. Treating the loop as a replaceable component, listed in the interface as “How the agent dispatches tool calls”, is a much stronger claim, and it is the one the project is really making.

Underneath is Cordis, a plugin runtime carried as a direct dependency (@deepseek-ai/cordis) and described in a paper the project links from its home page, A Programming Paradigm for Spatiotemporal Composability. Cordis is not DeepSeek’s own: the paper sits in the Cordiverse organisation, and Harness is built on top of it. The published package pulls in a family of @deepseek-ai/dsh-* modules covering goals, skills, tools and plugin management, which is the same architecture seen from outside: the CLI is thin and the capability lives in separately versioned parts.

Screenshot of DeepSeek's official Harness page headed Everything is a plugin, describing the developer preview and listing models, tools, skills, sessions, sandboxes, storage, loops, scheduling and the UI, with a quick-start command
DeepSeek's own page for Harness.

The four presets

Harness ships preset modes rather than one behaviour, and the mode selector states what each gives the agent. These are the names and descriptions the product itself uses, which are not the ones the launch write-ups settled on.

Screenshot of the DeepSeek Harness mode selector open, listing Standard mode with a tick, Code mode, Minimal mode and Creator mode, each with a description of what the agent is given
The mode selector, open. Standard is the default.
Mode Preset id What the product says it is
Standard standard Full coding agent: file editing, shell, file and web search, skills, planning, goals, subagents, workflows
Code code Standard, with tools exposed through the Code Mode SDK so the model combines multi-step operations in one TypeScript program
Minimal minimal Two tools: persistent bash and str_replace_editor
Creator cordis Standard, plus runtime inspection, plugin experiments and preset-authoring guidance

Minimal is the interesting one for anybody who has watched an agent work through fifteen tools to do a two-command job. Creator is the mode that matches the plugin thesis, and its preset id gives it away: cordis, the runtime itself. It exists so you can look inside a running harness and assemble your own.

The presets panel makes the relationship explicit. A preset, in the product’s words, is “the plugin composition one session’s agent runs”, and the four built-in ones are starting points rather than a menu: you duplicate one, or you have the agent draft one for you.

Screenshot of the DeepSeek Harness Agent presets panel showing four built-in presets, Standard mode marked In use, Code mode, Minimal mode and Creator mode, each with its preset id, above a Custom section offering to draft a custom preset with Creator mode
Four built-in presets and an empty custom shelf. The four are compositions of the 133, not fixed products.

One detail from the same panel is worth knowing before you run anything real: the default permission mode is workspace write, and a preset applies to sessions started from that point on rather than to sessions already running.

How it compares

Harness arrived positioned against the integrated coding agents, and the comparison worth drawing is architectural rather than about benchmarks.

Structure Licence
DeepSeek Harness Plugins all the way down, loop included MIT
Claude Code Integrated agent, extended through MCP and skills Proprietary
OpenHands Open agent platform, fixed core loop Open source
Goose Local agent, extended through MCP Apache 2.0

The honest reading is that Harness bets on composition where the others bet on a good default. That bet costs something. A system where every layer is replaceable is a system with more to configure, and 133 switchable parts is a surface as well as a capability. The project has also not had time to grow the ecosystem that would make the sockets worth having: the “Community plugins” button on its own home page points at a GitHub topic page for dsh-plugin, which is an invitation rather than a catalogue.

Screenshot of the npm page for the package at deepseek-ai slash dsh, showing version 0.1.0-rc.6 published three days ago, 61 dependencies, 20 dependents, 6 versions, and 195,945 weekly downloads
The published package on 16 August. The version string carries the maturity, a release candidate of 0.1.0, and npm was showing 195,945 downloads for a package three days old.

Should you use it yet

For production work, no, and the project says so itself twice: once in the README’s capitalised warning about compatibility-breaking changes, and once in the modal that greets every first run. Foundational APIs are expected to keep moving for months.

For understanding where agent tooling is heading, it is worth an hour. The install is a single command, the interface runs locally, and the architecture is legible in a way a closed agent is not: you can open the settings panel and read the parts list. If the plugin thesis holds, the interesting consequence is not that DeepSeek has shipped a rival to Claude Code or Codex. It is that the harness stops being the product and becomes the socket the products plug into.