What Is DeepSeek Harness (DSH)?

12 min read · · Updated · Zentor Editorial
What Is DeepSeek Harness (DSH)?

DeepSeek Harness (DSH) is DeepSeek's open-source, plugin-first agent runtime. What it is, why it ships with no CLI, and whether it's usable yet.

Contents

DeepSeek Harness is DeepSeek AI's open-source agent runtime, released under MIT on 13 August 2026, in which the model adapter, the tool registry, the session log and the agent loop are all replaceable plugins. It runs as a local web app on port 3080 rather than in your terminal, and it is explicitly a developer preview that promises to break.

Key Takeaways:

  • dsh is a harness, not a model: the layer that assembles prompts, exposes tools and records what the model did
  • It has no interactive CLI. A TUI package existed and was deleted the week before launch
  • "Everything is a plugin" is literal, and it comes from Cordis, a framework four years older than the harness
  • Two model adapters ship today, so it is less DeepSeek-locked in theory than in practice
  • Zero tags, zero releases, 0.1.0-rc.5: fine to explore, wrong to depend on

The star count is the part everyone quotes and the part that tells you least. It went from 60,481 to 62,770 during the ninety minutes I spent checking the rest of these facts, and the repository carries 12,293 commits with directories last touched two months ago, so DeepSeek built this behind a closed door and then flipped the switch. The project is a day old; the code isn't.

What is DeepSeek Harness (DSH)?

A harness is the layer between a model and everything outside it: it assembles the prompt, exposes the tools, records what happened, and decides what the model may touch. DeepSeek Harness, which the project shortens to dsh, is DeepSeek AI's own implementation of that layer, and the repository puts a four-word pitch in its description: "Everything is a Plugin."

That claim is unusually literal. The architecture documentation says the model adapter, the tool registry, the session log and the agent loop itself are all plugins, and states flatly that there is no privileged core to patch. You extend dsh by mounting a plugin beside the others instead of forking a centre.

Underneath sits Cordis, a plugin framework predating the harness by four years: created May 2022, MIT licensed, around 2,100 stars, and billed by its authors as a meta-framework of spatiotemporal composability. Cordis hands plugins a shared context into which they contribute services, typed events and reversible effects, and when a plugin unloads its registrations unwind. The theory went public the same day as the harness, as A Programming Paradigm for Spatiotemporal Composability. Reading it isn't a prerequisite for running dsh; it does explain the shape.

The deepseek-ai/deepseek-harness repository on 14 August 2026: the deepseek-ai/deepseek-harness repository at 62.7k stars under an MIT licence, with the patches row reading "cleanup: remove TUI package and legacy dsh entrypoints"
The deepseek-ai/deepseek-harness repository on 14 August 2026: the deepseek-ai/deepseek-harness repository at 62.7k stars under an MIT licence, with the patches row reading "cleanup: remove TUI package and legacy dsh entrypoints"

The harness that ships without a terminal

Most of the launch coverage buried the decision that actually distinguishes this project. Claude Code, Codex and the rest of that generation are terminal programs. DeepSeek Harness is not one. The only run command in the README is:

npx @deepseek-ai/dsh web

That starts a web application served at http://127.0.0.1:3080 by default. There's no interactive terminal interface at all, and the absence is deliberate rather than unfinished: a commit merged the week before the public launch reads "cleanup: remove TUI package and legacy dsh entrypoints". They had one, and they took it out.

A headless profile does ship, but it's a one-shot runner with no server, built for scripted single invocations rather than a session you sit inside and talk to. If your muscle memory is a split terminal pane, dsh will feel wrong for the first evening.

The community closed that gap within a fortnight, and not with a plugin. hust-open-atom-club/oh-dsh, an MIT-licensed runtime from a university open-source club created on 11 August 2026, ships Desktop, Web and TUI builds from a single ohdsh command, with the three sharing sessions, credentials and plugin cache while keeping separate profiles. It bundles Harness together with Node.js and the local toolchain as an installable distribution for macOS, Linux and Windows. So the terminal interface DeepSeek deliberately deleted is back, published by someone else, at 220 stars. Whether that counts as the ecosystem correcting an unpopular decision or simply fragmenting it is the open question; either way, the deletion did not stick.

The other consequence is quieter. What you're starting is a server bound to loopback on the machine in front of you, which is fine right up until the machine stops being in front of you.

127.0.0.1:3080 stops existing when you close the lid.
A harness that boots as a local web server lives exactly as long as your laptop stays awake, which is a poor fit for [an agent you wanted working overnight](https://zentor.ai/blog/deepseek-harness-always-on-agent). Zentor is a hosted cloud AI computer that stays powered on, running alongside whatever you already have installed locally rather than replacing it.
Keep the agent running after I shut the laptop…Try Zentor →

What "everything is a plugin" actually buys you

Plugin architectures are a common promise and a rarer delivery, so what does the design pay for here? Mostly the session log.

core/session owns an append-only SessionEvent log, and everything the model saw goes into it: system prompts, reasoning blocks, tool calls and their results, subagent scheduling, every context injection. Durable events such as turn/*, step/* and tool/* survive a reload. Alongside them run live extension points, agent/pre-step and llm/stream among others, which let a plugin watch or intercept work while it's still moving; an agent/pre-step hook can reject a step outright, or rewrite the messages going into it.

The vocabulary is precise in a way that suggests the maintainers argued about it: a step is one model request plus the tools that request calls, and a turn is zero or more steps, opening before its first input is claimed and closing once nothing is owed. Debugging an agent that did something expensive at step 40 is a different job when you have a replayable event log instead of terminal scrollback.

Events sort by domain, which is the first decision in most changes you'd make. Session events are durable facts; agent events carry a live agent with its inbox, status and continuation; capability events attach policy and adapters to a seam such as fs/* or tools/* without importing the loop at all.

Profiles, bundles and patches

A running dsh isn't a binary with a config file. It's a plugin tree composed at boot from ordered layers, and the vocabulary takes twenty minutes to absorb.

A profile is a named composition stored in the Harness home; it lists the bundles it stacks, holds any out-of-tree plugins it installs, and keeps your own cordis.patch.yml. Two ship as templates, web and headless. A bundle is the distribution format for Cordis config rows and the code those rows mount, so whatever a bundle inserts stays patchable from above.

dsh-base is the first layer of every profile, and its contents map what a harness has to own: model adapters, tools, persistence, sandbox and approval policy, settings, credentials, telemetry. dsh-web-app stacks the browser application on top; dsh-headless stacks the one-shot runner instead.

To see what your machine actually boots, dsh --profile web --dump-config prints the tree, and any row it prints can be replaced by a patch of your own.

The five ordered layers a dsh install boots from, starting with the dsh-base bundle and ending with a --patch overlay passed at launch
The five ordered layers a dsh install boots from, starting with the dsh-base bundle and ending with a --patch overlay passed at launch

Look at what dsh-base puts in the same layer as the model adapter: sandbox and approval policy. Those are there because the default deployment hands an agent your filesystem, your credentials and a shell, on the same laptop that has your email open in another window. An approval prompt is a mitigation, not a boundary, and it stops helping the moment you start clicking through it at speed. Zentor answers that differently by putting the agent on a hosted cloud machine of its own, so a plugin that misreads a path takes out something that was never your desktop.

DeepSeek Harness versus a general agent harness

The generic version of this concept, and the tradeoffs any implementation of it faces, we covered separately in what an agent harness is. DeepSeek Harness is one opinionated point in that space, and the interesting question is how tied to DeepSeek it really is.

Architecturally, less than the name implies. packages/llm holds a documented adapter contract that every adapter must implement, plus a message and streaming vocabulary shared by all of them. Assistant messages record an AssistantProvenance naming the provider and model that produced them, with adapter-private replay state, and the runtime exposes that state to a target adapter only when the same adapter instance owns both the historical provider and the target. That is machinery built by people who expected histories to move between providers.

Practically, two adapters exist today: llm-deepseek and llm-pi-ai, next to llm-retry and a token-meter. Two is a seam, not a marketplace, and both ship inside DeepSeek's repository on DeepSeek's cadence. Reaching a model nobody has written an adapter for means writing one or waiting for one. Zentor works a level up from that argument: a hosted machine where reaching more than one model isn't a property of any single vendor's plugin tree. DeepSeek's own models are worth the attention regardless, and DeepSeek V4-Pro changed the arithmetic for agents when it arrived.

The plugin ecosystem, three days in

The dsh-plugin GitHub topic carried 890 public repositories on 14 August 2026, one day after launch, and it gained twenty-one of those during the ninety minutes I spent reading the docs. Read the number carefully, though. The README asks plugin authors to add the topic for discoverability, so what it counts is self-declarations, and a topic tag costs nothing to apply.

The GitHub dsh-plugin topic page listing 890 public repositories one day after DeepSeek Harness went public
The GitHub dsh-plugin topic page listing 890 public repositories one day after DeepSeek Harness went public

The second-largest repository in the topic makes the point. titanwings/colleague-skill sits at 21,375 stars and was created on 30 March 2026, four and a half months before DeepSeek Harness existed publicly. It didn't appear for this ecosystem; it relabelled itself into it. Below those two the counts fall into the hundreds, where the genuinely new arrivals live: a web UI skin collection, a TUI filling the gap DeepSeek deliberately left, a sidebar add-on.

By 15 August the ecosystem had started indexing itself, which is the part worth watching. Four separate curated lists now compete to catalogue the same young project: awesome-dsh-plugin/awesome-dsh-plugin at 1,313 stars and 0xsline/awesome-deepseek-harness at 408, both CC0-licensed, alongside two documentation efforts, alchaincyf/deepseek-harness-orange-book at 614 stars and Electricitysheep/dsh-handbook at 218. A fifth, xiaobright/dsh-anchored-standard, went from 497 stars to 635 in the hours I spent checking these numbers. All five were created between 11 and 14 August 2026.

That is a strange ratio. A tool two days old had accumulated more curated indexes and handbooks than it had stable plugins to index, which usually means the curation is racing the thing it curates rather than following it. Awesome-lists are cheap to publish and collect stars quickly, so they are a better measure of attention than of maturity. The honest read is that a lot of people expect this ecosystem to matter and are staking out territory early, not that there is yet much settled practice to write down.

One more entry makes the point sharper than any star count. yjh051108/dsh-router-standard (271 stars, MIT, created 14 August 2026) is the second repository in this ecosystem to put the word "standard" in its name, and it is a task-aware reasoning-mode router rather than an index. What makes it worth reading is the top of its README, which is a retraction. The author marks the theoretical part of their own paper as void, including the dual-attractor hypothesis it was built on, while leaving the paper itself up and keeping the measured results. The revised explanation is that what looked like an intentional dual-mode design is more likely a fault line between a native deep-reasoning path and a minimal path that post-training never fully converged, and that the router works by using that fault as a routing layer. Read that alongside the five indexes and handbooks above and the pattern is consistent: the writing about this ecosystem is running ahead of the evidence, and at least one author has now said so in public about his own work.

The newest arrival in the topic makes a different point about what a plugin is allowed to be. ZSeven-W/dsh-ios (227 stars, MIT, created 19 August 2026) mounts a live iOS Simulator into the conversation: 22 tools for booting a device, building an Xcode project, driving the UI by accessibility identity or by Vision OCR on the pixels, and reading unified logs, with the screen rendered as an MJPEG stream in a sidebar panel you can tap and drag on. It will also drive a real iPhone over USB, by building and launching WebDriverAgent on the phone and tunnelling its control and screen ports over loopback into the same panel. None of that is text. A plugin here isn't extending the conversation, it's buying a whole capability into the runtime, and the version numbers say how early that still is: five release candidates between 20 and 23 August 2026, and no stable release yet.

Which raises a question about trust that nobody wants to be first to ask. A plugin in this system isn't a sandboxed extension; it mounts into the same Cordis context as the tool registry and the credential store, and the architecture's own selling point is that no core is privileged. Installing a stranger's four-day-old plugin means giving it the same reach the harness has. Running that experiment somewhere disposable is the obvious precaution, and Zentor is one way to get a machine you're willing to be careless with, separate from the one holding your actual work.

Desktop clients arrived before the API settled

The other thing the ecosystem produced fast was somewhere to put DeepSeek Harness that isn't a terminal. lencx/Minke (210 stars, Apache-2.0, created 15 August 2026) wraps it as a native desktop workspace, with files, terminals, web tools and plugin discovery in independent right and bottom panels beside the conversation, plus signed builds for macOS on both Apple Silicon and Intel, Windows x64, and Linux.

Two details make it worth flagging rather than filing under "someone made a GUI". The first is the data boundary: application state and browser session data stay on the machine and desktop preferences live under ~/.minke, one directory rather than scattered app-support paths. The second is the disclaimer in the README, in a callout, near the top: Minke is an independent community project and not an official DeepSeek product, and its packaging and local data schema may still change.

That second point is the honest read on every client in this list. A desktop app built on a runtime that has publicly warned about compatibility-breaking changes inherits those breaks, and inherits them in the place where your local data lives. Worth installing if the terminal is the thing keeping your team off DSH; worth backing up ~/.minke before you do.

Is DeepSeek Harness ready for production?

No, and DeepSeek says so in capital letters. The README's second section is headed Developer preview and reads: "THERE WILL BE COMPATIBILITY-BREAKING CHANGES." The official site carries the same framing.

The repository backs that up. On 14 August 2026 it had one branch, zero tags, and zero published GitHub releases, with version commits still labelled 0.1.0-rc.5. Nineteen contributors, 5,240 forks, 238 watchers. There's no documented upgrade path because there is nothing yet to upgrade from.

So the honest read: worth a serious afternoon if you build on harnesses, worth nothing this quarter if you need something stable underneath a team. A plugin API guaranteed to break is a fine thing to explore and a bad thing to depend on, which argues for keeping your exploration and your working setup in different places. Zentor is built to sit alongside what you already run rather than in place of it, which is what makes it easy to walk away from a preview that broke overnight without losing the rest of your week. The free trial runs three days on 1,000 credits, and a $20 subscription carries 1,000 credits a month.

The wider point survives the version number. DeepSeek shipping a harness at all means it now competes on the layer deciding how models use tools, hold sessions and run long jobs, not only on the weights.

FAQ

Is DeepSeek Harness free and open source?

Yes. The LICENSE file in the repository is a standard MIT licence, copyright 2026 DeepSeek, which permits commercial use. Third-party dependency licences are listed separately in THIRD_PARTY_NOTICES.md.

Does DeepSeek Harness only work with DeepSeek models?

Not by design, but nearly so in practice today. The adapter contract in packages/llm is documented and open to new implementations, and message provenance is tracked per provider so histories can move. As of 14 August 2026 the shipped adapters are llm-deepseek and llm-pi-ai, so anything else needs an adapter written for it.

What is a plugin in DSH?

A unit that mounts into the shared Cordis context and contributes services, typed events and reversible effects to it. Because there is no privileged core, the model adapter, tool registry, session log and agent loop are themselves plugins, and any of them can be replaced from configuration rather than by forking.

Does DeepSeek Harness have a CLI?

Not an interactive one. npx @deepseek-ai/dsh web launches a web UI on port 3080, and the headless profile provides a one-shot runner for scripts. A TUI package existed and was removed the week before launch; a community plugin has since filled that gap.

How do I run DeepSeek Harness?

Install Node.js and run npx @deepseek-ai/dsh web, then open http://127.0.0.1:3080. From a checkout it's pnpm install, pnpm run build, then pnpm dsh web. Both routes run the harness on your own machine.

Repository facts, star counts, licence text and package contents in this article were checked against the source on 14 August 2026. DeepSeek Harness is in developer preview and changing daily, so verify anything load-bearing before you build on it.

Zentor Editorial
Zentor Editorial Zentor editorial team

The Zentor editorial team writes about workflow automation, AI agents, and the tools we build. Default byline for industry overviews, listicles, and collaborative pieces.

Share

Ready to put this into practice?

Zentor runs browser tasks, research, and schedules automatically. Try it free.