Foreword

DeepSeek Harness (DSH) runs dsh web in the terminal foreground by default. You must keep a cmd/PowerShell window open; accidentally closing the window stops the service. This tool converts it into a standard Windows tray application: double-clicking the shortcut starts it windowlessly, keeps a persistent icon in the system tray, and automatically opens the browser once Harness is ready. The tray menu manages the UI and logs; “Exit” performs a full shutdown (stops Harness first, then closes the tray).

What is it?

dsh-tray-launcher is a Windows desktop tray launcher for DeepSeek Harness. It is maintained by fancr-code and released under the MIT license.

It does not depend on desktop shell runtimes such as Electron. Instead, it is based on a pure PowerShell core script (~30 KB) combined with a one-line VBS script. Compared with packaged desktop clients, it is smaller, cleaner, and leaves no residual background processes. Memory usage is optimized; measured steady-state usage is about 55 MB working set / 84 MB private commit.

Core Features

  • Low footprint: pure PowerShell + VBS, no Electron runtime, periodically trims the working set.
  • Persistent system tray: windowless operation, tray icon + balloon notifications (started, running, stopped); automatically hides if Harness exits unexpectedly.
  • Windowless startup: no cmd/console window pops up; stdout/stderr are written to log files.
  • Automatic browser launch: polls the port in the background and automatically opens the Web GUI as soon as Harness starts listening.
  • Single-instance protection: mutex lock + port detection; double-clicking the shortcut repeatedly does not start a duplicate instance, but only opens the UI.
  • Multiple icon switching: preset Liangzu, Whale Girl, and DeepSeek icons; switch with one click via the tray right-click menu “Switch icon,” and the tray and desktop shortcut icons are updated synchronously.
  • Autostart: can be registered during installation via the -Autostart parameter, or toggled with one click from the tray right-click menu.
  • Built-in usage meter: ships with dsh-plugin-usage-meter, which is automatically registered during installation; the tray menu displays the current version and supports one-click updates.
  • Self-update: the tray menu “Update launcher” updates itself with one npm i -g click.
  • Can be installed as a dsh plugin: after installing via dsh plugin add, the tray starts/exits automatically with Harness.

Installation and Enablement

Prerequisites

  • Windows 10 / 11
  • Windows PowerShell 5.1
  • DeepSeek Harness CLI installed (dsh web can start normally)
  • Node.js installed (version >= 18)

Global Installation

npm install -g dsh-tray-launcher

After installation, run the following command to start it:

# 托盘模式(无窗口)
dsh-tray

# 控制台模式(日志直出终端)
dsh-tray --console

Install as a DSH Plugin

dsh plugin --profile web add dsh-tray-launcher

In this mode, the tray starts/exits automatically with Harness. Configuration and logs are saved in %DSH_HOME%\dsh-tray.

Typical Usage

Operation Effect
dsh-tray Windowless startup; tray icon + balloon notification appears; opens the browser automatically when the port is ready
dsh-tray --console Console mode; runs in the foreground and outputs logs directly to the terminal
Double-click the tray icon Open the UI
Tray “Exit” Stop Harness + close the tray (full exit)
Tray “Switch icon” Open a submenu to switch to Liangzu / Whale Girl / DeepSeek / custom icon

Configuration

The installer generates dsh-tray.config.json in the installation directory (%LOCALAPPDATA%\Programs\DSHTray\); all fields are optional:

{
  "dshBin":   "C:\\...\\node_modules\\@deepseek-ai\\dsh\\lib\\bin.js",
  "node":     "C:\\Program Files\\nodejs\\node.exe",
  "url":      "http://127.0.0.1:3080",
  "icon":     "liangzu",
  "shortcut": "C:\\Users\\<you>\\Desktop\\DeepSeek Harness.lnk",
  "cwd":      "C:\\Users\\<you>"
}
  • dshBin / node: when omitted, they are auto-detected in the order “npm global → npx cache → PATH → common paths.”
  • icon: supports liangzu (default), whale-girl, deepseek, or a custom .ico path.
  • shortcut: desktop shortcut path, used to synchronize the icon.

Notes

  • Exit behavior: clicking tray “Exit” stops Harness and exits the tray (full exit).
  • Icon asset attribution: the Liangzu portrait is sourced from related open-source projects, the Whale Girl frames are sourced from related open-source projects, and the DeepSeek whale logo is from DeepSeek.
  • Known limitation: when exiting, it locates and terminates Harness using the port occupant and node.exe processes whose command line contains dsh. If other node processes with dsh in their command line are running, they may be terminated as well.

Conclusion

dsh-tray-launcher solves the pain point that DSH on Windows requires a persistent terminal window, providing a lightweight, zero-runtime tray solution. It is suitable for users who need to keep Harness resident in the background and access the Web UI via a browser.

GitHub repository