DeepSeek Harness: Local AI Agent Writes a Working CLI Tool in 11 Steps, 3 Tests Green
The tool proves a local, self-hosted agent can do meaningful coding work with data kept on your machine, but its preview label, Node 22 requirement, and the split credential paths between Web UI and headless mode mean you should evaluate it for personal or CI use, not production workflows.
DeepSeek Harness is now officially open source under MIT, written in TypeScript, and built on Cordis with an everything-is-a-plugin architecture. It is not a model; it is the shell that orchestrates file I/O, command execution, task planning, sessions, permissions, and plugins. The default web UI listens on 127.0.0.1:3080, requires a one-time token from startup output, and stores API keys write-only in ~/.dsh/.credentials.yaml (600 perms).
The installation has two traps that are absent from the README. Node 20 will install fine but crash on first run with an obscure parseEnv error; Node 22 or newer is required. npm 11 blocks install scripts by default, so node-pty and koffi never compile; you must pass --allow-scripts with the exact package list. The default workspace is ~/Documents/deepseek-harness/default-workspace, not the launch directory.
In a real coding test, the agent produced a 400-line zero-dependency CLI tool, 149 lines of tests, and an 83-line README in 11 steps, consuming 244K tokens with a 95% cache hit. It self-discovered and fixed a bug where width normalization assumed a single table. Scheduled tasks, sub-agents, MCP overlays, and custom model providers are built-in. Headless mode runs a single prompt in about 4 seconds, but it requires the DEEPSEEK_API_KEY environment variable and will not read the key you saved through the Web UI.
The 95% cache hit rate in the benchmark run is the strongest signal about cost behavior: most of those 244K tokens were re-read context, not new generation, so consecutive jobs on the same repository may become dramatically cheaper after the first pass.
The write-only API key design is noticeably more careful than typical agent tools that echo keys back to the frontend or store them in plain config files, and it sets a security baseline worth copying.
The credential mismatch between Web UI and headless mode is the kind of rough edge you expect from a preview version: the plugin architecture centralizes features but not the credentials store, which can quietly bite CI users.
Defaulting to workspace-only modification makes sense for a tool that runs arbitrary commands, and the trade-off against full access is well communicated in the UI, but the preview label still undercuts production confidence.