Plugin directory / Developer / dsh-webui-launcher
dsh-webui-launcher
Unverified YV3507
What it does
A plugin in the Developer category for DeepSeek Harness.
Unverified — not yet verified
A plugin in the Developer category for DeepSeek Harness. Not yet verified — install and test it yourself.
“Unverified” means our automated CI has not yet installed this plugin. Feature descriptions and version compatibility are the author’s claims. This is not a security audit and not an endorsement of third-party code.
README
dsh-webui-launcher — cross-platform Web UI launcher for DeepSeek Harness
English | 中文
Start, stop, check and open the DeepSeek Harness Web UI from inside the harness — cross-platform (Windows / macOS / Linux), no desktop scripts needed.
Install
dsh plugin --profile web add github:YV3507/dsh-webui-launcher
or from a checkout:
cd dsh-webui-launcher
npm install && npm run build
dsh plugin --profile web add .
What it adds
- Model tools —
webui_start,webui_stop,webui_status,webui_open: start the Web UI (spawningdsh --profile webin the background), wait until it answers HTTP 200, report or stop it, open the default browser. - Slash command —
/webui start|stop|status|open. - Settings card — a "Web UI Launcher" card on the Settings page of the web GUI (browser half,
exports["./client"]), driving the same/webui/*JSON endpoints. - Desktop shortcut — on the first plugin start, a launcher shortcut is created on the desktop (
.lnkon Windows,.desktopon Linux,.commandon macOS) that starts the Web UI and opens the browser once ready. Headless hosts (no Desktop, no DISPLAY) skip creation silently; disable withdesktopShortcut: false. - dsh default icon — the shortcut uses the official dsh icon by default (the web-app favicon rasterized and bundled in
assets/;.icoon Windows,.pngon Linux), copied into the persistent state directory so a reinstall never orphans it. - Custom shortcut icon — upload any image (PNG/JPEG/BMP/GIF/TIFF) from the Settings card; it is converted automatically (multi-size
.icoon Windows,.pngon Linux) and the existing shortcut's icon is updated immediately. An explicitshortcutIconPathoverrides the default.
Configuration
| Option | Default | Meaning |
|---|---|---|
port |
3080 |
Web UI port. |
host |
127.0.0.1 |
Loopback host dsh web binds. |
cliBin |
"" |
Explicit dsh CLI script; empty reuses the running CLI. |
startupTimeoutMs |
120000 |
How long start waits for the surface to answer HTTP 200. |
openBrowserOnStart |
true |
Open the default browser once the Web UI is ready. |
desktopShortcut |
true |
Create the desktop launcher shortcut on the first plugin start. |
shortcutName |
"DeepSeek Harness Web UI" |
Display name of the desktop shortcut. |
shortcutIconPath |
"" |
Explicit icon image; empty uses the bundled dsh icon. |
Behavior and robustness
- Adopt-or-start — a server already listening on the port is adopted: never restarted, never stopped.
webui_stopkills the tree this plugin spawned, and also an adopted server whose PID the launcher (or an earlier instance) recorded — only when that PID is the one currently listening, and only for the process hosting this plugin, with the samenode.exeidentity guard before killing. A foreign server without a PID record is never touched. - Explicit state machine —
idle → starting → running → stopping, single-flight serialized: concurrentstart/stopcalls never interleave. - Orphan cleanup — when the plugin unloads or hot-reloads, any server it spawned is stopped (
ctx.effectdispose). - PID identity guard — before killing, the process is re-checked (alive, still our child, still
node.exevia tasklist on Windows) so a recycled PID is never touched. - Abort/timeout hygiene — an aborted or timed-out start kills the child it spawned and surfaces the output tail in the error.
- CLI location fallback — the running CLI (
process.argv[1]) → the@deepseek-ai/dshpackage → explicitcliBin; resolution failure throws an actionable error.
Development
npm run build # esbuild → lib/index.js (host) + lib/client.js (browser)
npm test # node --test, zero-dependency (mocks the two external packages)
The state-machine failure paths (child death, timeout, abort, sibling adoption, concurrency, dispose) are unit-tested against the built bundle with scripted fake dependencies — no real processes or timers.
Security
Loopback-only by default, no elevation, no external network. The plugin kills only the process tree it spawned — or a PID-recorded launcher server it hosts — after verifying the PID still belongs to that process.
License
MIT
Install
Install the catalog once, then DeepSeek Harness can find and install any plugin from this site automatically:
dsh plugin add dshbase-catalog Then say "install dsh-webui-launcher for me" — your agent finds it in the directory and installs it. Docs: dshbase-catalog · verified packs.
This plugin is GitHub source (not published to npm) — install it straight from the repo:
Web profile:
dsh plugin --profile web add github:YV3507/dsh-webui-launcher Headless (CLI) profile:
dsh plugin --profile headless add github:YV3507/dsh-webui-launcher Test report
Not yet L3-verified — see failure note below if we already ran it.
2026-08-26 · flagged webonly Note: 验证: web-only;待 L4 web CDP;L4 web CDP runtime-fail on dsh 0.1.0-rc.8. Browse all pending failures →