Architecture
A desktop host around an upstream runtime.
The project does not reimplement DeepSeek Harness. It starts a pinned upstream package, waits for its local web service and loads that service inside a Wails WebView.
Runtime structure
DeepSeek Harness Desktop (Wails / Go)
├── native window and application lifecycle
├── environment checks and local log
├── loopback port selection and readiness probe
└── npx @deepseek-ai/dsh@0.1.0-rc.6 web
└── node / dsh
└── official Web UI on 127.0.0.1:<port>
Startup sequence
- Locate Node.js and npx on the user's machine.
- Select port 3080 or another available loopback port.
- Start the pinned
@deepseek-ai/dshpackage with an application-specific npm cache. - Probe the local HTTP endpoint until it becomes ready.
- Load the official Web UI inside the preserved Wails window.
- Show startup status and logs if the runtime cannot become ready.
Shutdown sequence
On a normal application exit, the host terminates the complete process group or process tree created by npx → node → dsh. Platform-specific implementations handle Unix-like systems and Windows separately.
Ownership boundary
| Desktop host owns | DeepSeek Harness owns |
|---|---|
| Native window | Agent loop and tools |
| Environment checks | Models and credentials |
| Port and readiness | Sessions and profiles |
| Logs and process cleanup | Plugins, skills and interface |
Why Wails?
Wails pairs a Go host with the operating system WebView. The project therefore does not ship a separate Chromium runtime. This keeps the desktop package small, while making the application dependent on the platform WebView and a preinstalled Node.js runtime.