Quick Answer
DeepSeek Harness (dsh) is DeepSeek AI's open-source agent harness — an agent framework built on an "everything is a plugin" architecture, powered by Cordis and released under the MIT license. It is currently in developer preview and iterating fast, so expect compatibility-breaking changes.
Installation needs only Node.js. The fastest way to run it:
npx @deepseek-ai/dsh web
This pulls the package and starts the Web UI at http://127.0.0.1:3080 by default. To run it on DeepSeek V4 Pro / Flash — including the 200-request-per-day free tier — point the API key and base URL at TeamoRouter. Details below.
What DeepSeek Harness Is
First, what it is and isn't. The industry has converged on a clean formula:
Agent = Model + Harness
The model is the brain — the weights that predict tokens. The harness is everything else: the tools the agent can call, the filesystem and shell it can touch, how sub-agents pass information to each other, how context is stored and retrieved, and — critically — when execution stops. A bare model is bad at memory, code execution, and tool calling on its own; the harness turns a chat model into a worker that can actually edit code and run commands.
DeepSeek Harness's defining trait is its architecture: everything is a plugin. The filesystem, the shell, the model adapter, the Web UI, and sub-agents are all swappable Cordis plugins. That gives you two things: you can trim an agent's capability surface (give it only terminal + file ops, no network), and you can swap one provider (e.g. move the model from the official API to TeamoRouter) without touching anything else.
Prerequisites
- Node.js — any recent version (for
npx). Building from source additionally needspnpmandgit. - A working model backend: a DeepSeek API key, or a TeamoRouter key (
sk-teamo-...), which gives youdeepseek-v4-pro-free/deepseek-v4-flash-freeaccess.
Method 1: One command via npm (recommended)
npx @deepseek-ai/dsh web
The first run downloads the package, then the Web UI starts. Open http://127.0.0.1:3080 for the console. This is the lowest-friction, everyday path — no clone, no build.
To make the agent actually do work, configure the model backend. DeepSeek Harness reads model config from environment variables — two matter most:
export DEEPSEEK_API_KEY="sk-teamo-your-key"
export DEEPSEEK_BASE_URL="https://api.teamorouter.com/v1"
Put these in your shell profile (~/.zshrc or ~/.bashrc), or export them before launch, and dsh sends model requests to TeamoRouter's OpenAI-compatible endpoint instead of DeepSeek's official API. Full wiring steps in Connect DeepSeek Harness to TeamoRouter.
Method 2: Build from source
Use this when you want to modify, track the latest code, or contribute to the plugin ecosystem:
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh web
pnpm dsh web and npx @deepseek-ai/dsh web are the same command — the former uses local source, the latter the published npm build. Source builds make sense during developer preview, since main often runs a few minor versions ahead of the release.
After Launch: What's in the Web UI
http://127.0.0.1:3080 is a local web console with these capabilities:
- Session management — create / switch / rename sessions, run several in parallel.
- Model selection — switch between configured models (e.g.
deepseek-v4-provsdeepseek-v4-flash). - Tool panel — the tools the agent can actually call: bash, file read/write, sub-agents, web search, and more.
- Goals — break long tasks into stateful goals, pause / resume / mark complete.
A common misconception is treating dsh as "yet another chat window." It is really the front-end of an agent runtime: you give a goal, the agent loops over tools until done, and the UI is your window for observation and intervention.
A Minimal Working Example
After setting DEEPSEEK_API_KEY / DEEPSEEK_BASE_URL, give the agent this task in the Web UI:
List the current directory, find the README, summarize its first paragraph in one sentence, and write it to /tmp/summary.txt
dsh calls bash (list files, read the file) and the file tools in sequence, then reports back. That is the most direct demonstration of "the harness turns a model into a worker."
FAQ
Is dsh tied to DeepSeek's official API?
No. dsh is model-agnostic; DEEPSEEK_BASE_URL can point at any OpenAI-compatible endpoint. With TeamoRouter it runs the DeepSeek V4 family, and can route Claude, GPT, and Gemini from a single key.
What does "developer preview" mean?
Interfaces and config will still change, so don't depend on a specific API detail in production. For solo developers, learning agent architecture, and cheap agent experiments, it is already fully usable.
I installed it but the agent won't run / I get auth errors?
Nine times out of ten the env vars aren't applied. Run echo $DEEPSEEK_API_KEY to confirm the key is set; make sure DEEPSEEK_BASE_URL includes /v1 (the OpenAI SDK needs it); and confirm the key starts with sk-teamo- with no stray whitespace.
How does the free quota work?
TeamoRouter's deepseek-v4-pro-free and deepseek-v4-flash-free are each 200 requests/account/day, counted by request (one full turn), not tokens. In an agent loop, each tool round-trip is one request — see deepseek-v4-pro-free 200 Requests a Day.
To try the agent loop cheaply, register TeamoRouter, grab a key, point DEEPSEEK_BASE_URL at it, and run DeepSeek V4 Pro free inside dsh.