Skip to content
dsh.fish
Bundle

dsh-plugin-desktop

Opens the DeepSeek Harness Web UI in a native desktop window instead of a browser tab.

Source
kkaktus463
License
MIT
Updated
Updated 6 days ago

Readme

# dsh-plugin-desktop

English | [Русский](README.ru.md) | [中文](README.zh.md)

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](../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`:

```yaml
- 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.

Install

dsh plugin --profile web add github:kkaktus463/dsh-plugin-desktop

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source