dsh-plugin-desktop
Opens the DeepSeek Harness Web UI in a native window instead of a browser tab.
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 23, 2026
- Updated
- Aug 23, 2026
Introduction
dsh-plugin-desktop
Opens the DeepSeek Harness Web UI in a native window instead of a browser tab.
The plugin does not start a harness of its own. By the time it loads, the process is already listening, so the window simply attaches to it. Ownership stays in one place: the harness outlives the window, and closing the window never takes the server down.
Requirements
The window itself is a separate application, DSH Desktop. The plugin locates and launches it; without it the UI stays in the browser and a warning goes to the log.
Windows only for now.
Installation
dsh plugin --profile web add dsh-plugin-desktop
From a local directory:
dsh plugin --profile web add ./dsh-plugin-desktop
Check that the layer is in place without booting the harness:
dsh --profile web --dump-config
Configuration
The bundle patch already takes the host and port from the webStartup service,
that is, from whatever the web app actually bound to.
| Field | Meaning |
|---|---|
port | Harness port. Taken from webStartup by default. |
host | Address. The window only opens for a loopback address. |
executable | Full path to dsh-desktop.exe when the search fails. |
The search looks in %LOCALAPPDATA%\DSH Desktop, %LOCALAPPDATA%\Programs\DSH Desktop, %PROGRAMFILES%\DSH Desktop, then along PATH.
To override the path in your own profile — $DSH_HOME/profiles/web/cordis.patch.yml:
- id: desktop
config:
executable: 'C:\Tools\DSH Desktop\dsh-desktop.exe'
A patch replaces a row's whole config, so an override must restate every field
it needs, not only the changed one.
Behaviour
- Server bound to a non-loopback address — the window does not open and the log explains why: a browser is the right surface there.
- The app is already running — a second launch raises the existing window.
- The plugin is unloaded — the window closes, the harness keeps running.
Licence
MIT.