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

  1. Locate Node.js and npx on the user's machine.
  2. Select port 3080 or another available loopback port.
  3. Start the pinned @deepseek-ai/dsh package with an application-specific npm cache.
  4. Probe the local HTTP endpoint until it becomes ready.
  5. Load the official Web UI inside the preserved Wails window.
  6. 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 ownsDeepSeek Harness owns
Native windowAgent loop and tools
Environment checksModels and credentials
Port and readinessSessions and profiles
Logs and process cleanupPlugins, 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.