Substructure vs. DeepSeek Harness
Checked August 19, 2026
DeepSeek Harness (dsh) is for one developer on one machine: an
MIT-licensed agent runtime in
developer preview since August 2026, built on the Cordis framework, where
everything is a plugin: the model adapter,
the tools, the skills, the sessions, the sandbox, the storage, the loop, and the
UI. Substructure is a server that runs agents for a team: config in git,
Slack, MCP authorization, history, and durable runs.
Harness is a client with a shell and a file system. Substructure is a service that clients call.
| Use DeepSeek Harness when | Use Substructure when |
|---|---|
| The agent edits files on your computer | The agent answers your team |
| You want to replace the loop, storage, or UI | You want the loop open but not owned |
| One developer runs it | It must run after you close your laptop |
What Substructure does that DeepSeek Harness does not
- Runs on a server for a team.
dsh webserveshttp://127.0.0.1:3080, and the CLI refuses--host 0.0.0.0, because the agent runs commands and an open port would give that power to the network. - Authenticates people. The Harness web UI has no login. Remote access means a proxy, TLS, and authentication you add yourself.
- Restarts a dead run. The Harness log supports resume, fork, and replay, and you decide when to use them. Substructure's engine continues from the last saved step by itself.
- Answers in Slack. Harness surfaces are a local web UI, a terminal UI, and a headless mode for scripts and CI.
- Takes your code in any language. Harness plugins are Cordis plugins in TypeScript, on Node.js.
Side by side
Building the agent
| DeepSeek Harness | Substructure | |
|---|---|---|
| The agent is | A profile of mounted plugins | A file in your repo |
| You extend it with | Cordis plugins and config patches | Config, plus an HTTP worker |
| Language | TypeScript, on Node.js | Any language, over HTTP |
| Run modes | Standard, code, minimal, creator | One loop, overridable per step |
| Skills and plugins | Its own plugin tree | agent-plugins directories |
| Models | DeepSeek V4, plus a provider catalog | Any provider, one line |
Running it
| DeepSeek Harness | Substructure | |
|---|---|---|
| Where it runs | Your machine, on 127.0.0.1 | A server, cloud or self-hosted |
| Users | One | Everyone in the deployment |
| Session log | Append-only; resume, fork, replay | Append-only; the engine resumes |
| After a crash | You resume the session | The run continues on its own |
| Status | Developer preview, breaking changes | Stable |
Tools and surfaces
| DeepSeek Harness | Substructure | |
|---|---|---|
| Shell and files | Sandboxed on your machine | Not offered |
| Sandbox | read-only, workspace-write, full access | Tools run in your worker or an MCP server |
| MCP | Off until you enable each server | The engine holds the credentials |
| Sub-agents | Plugins, plus Claude Code and Codex bridges | Other agents in the file |
| Surfaces | Local web UI, TUI, headless | Slack, AG-UI, CLI, your API |
What you write
npx @deepseek-ai/dsh web # serves http://127.0.0.1:3080[agent.oncall]
llm = "openrouter"
model = "moonshotai/kimi-k3"
system = "You are the on-call assistant."
mcp = [{ id = "sentry", tools = { read_only = true } }]
[slack]
mentions = "oncall"subs apply, and the bot answers in Slack threads. Add a worker URL and the
engine sends every decision to your endpoint as JSON, one step at a time.
Where DeepSeek Harness is the better choice
- Editing files on your computer, inside a sandbox. Substructure does not do that.
- Replacing the agent loop, the storage, or the interface. The plugin tree goes further than most products allow.
- Benchmarking models, with the minimal mode and replay tests.
- One local process, with your keys on your own disk.
Questions
Can it run on a server? Only behind a proxy, TLS, and authentication you add. The CLI blocks binding to the network on purpose.
Do both keep a full log? Yes. Harness checks each model call against its log; Substructure uses the log to continue a run after a crash.
Can I use both? Yes. Harness edits code on your laptop; Substructure runs the agent your team talks to.
The quick start takes about five minutes.