← Back to home

hanwuji1

dsh-web-launcher

πŸ‹ One-click desktop launcher for the DeepSeek Harness Web UI β€” a whale-icon app that boots dsh web and opens your browser. Zero friction, zero typing.

Stars
0
Language
JavaScript
Created
Aug 15, 2026
Updated
Aug 15, 2026

Introduction

dsh-web-launcher β€” one click. zero friction.

npm version GitHub Stars License test

English Β· δΈ­ζ–‡

Stop typing. Stop navigating. Double-click the whale and you're in.

DeepSeek Harness (dsh) is DeepSeek's open-source agent harness. Its Web UI is one command and one URL away from your work β€” this plugin removes both.


πŸ‹ The Philosophy

Good tools disappear.

Every time you open the DSH Web UI the old way, you perform the same ritual:

open terminal  β†’  type "dsh web"  β†’  wait for boot  β†’  open browser  β†’  type the URL  β†’  Enter

Six steps. Ten seconds. Every single time. Ten times a day, that's a hundred minutes a month spent just arriving at your tools β€” not doing the work. Friction like this doesn't sound like much per click, but it taxes you every time, forever. The tax is invisible, so it never gets questioned.

This plugin exists to delete that ritual:

  • πŸ–±οΈ One click to be there. Double-click the whale. The server boots, the browser opens, you're in. There is no step two.
  • πŸ” Idempotent by design. Already running? It just opens the browser. Double-click it ten times β€” nothing breaks, no port conflicts, no duplicate servers.
  • πŸ•³οΈ Invisible complexity. The launcher script lives in %LOCALAPPDATA%, off your desktop. All you see is one clean app icon.
  • 🌍 Works anywhere. The launcher is pure ASCII β€” it parses correctly under GBK, UTF-8, or any Windows codepage, on any machine.
  • πŸ€– Agent-native. A web_launcher model tool lets the agent itself install, open, or check the UI β€” the entry point becomes part of the workflow, not a detour from it.

"The best interface is no interface β€” the second best is one click."


✨ Features

πŸ‹ App-style desktop shortcutA DeepSeek Harness Web app with a black-whale icon on your desktop
⚑ Auto-start & auto-openBoots dsh web, polls until ready, opens the browser β€” no waiting, no URL
πŸ›‘οΈ Self-healing entryServer already up β†’ straight to the browser; dsh missing β†’ clear hint, never a silent flash
🧹 Clean desktopOnly the app icon is visible; the launcher lives in %LOCALAPPDATA%\dsh-web-launcher
πŸ€– web_launcher toolModel-callable install / open / status actions from inside a session
βš™οΈ Fully configurablePort, app name, launcher name, directories β€” all overridable via cordis.patch.yml
βœ… TestedUnit-tested (rendering, port probing, ICO packaging) and CI-checked on every push

πŸ“¦ Install

One line. Requires a dsh profile (e.g. the web profile).

# from npm
dsh plugin --profile web add dsh-web-launcher

# or straight from GitHub
dsh plugin --profile web add github:hanwuji1/dsh-web-launcher

That's it. The next time dsh web starts, the plugin places the DeepSeek Harness Web app on your desktop.

No dsh yet? Standalone PowerShell install:

powershell -ExecutionPolicy Bypass -File install.ps1        # default port 3080
powershell -ExecutionPolicy Bypass -File install.ps1 -Port 8080

πŸš€ Usage

Double-click DeepSeek Harness Web on your desktop:

SituationWhat happens
Server not runningStarts dsh web, polls up to ~60 s, auto-opens the browser
Server already runningOpens the browser directly
dsh not installedShows npm install -g @deepseek-ai/dsh hint

Close the console window to stop the server.

web_launcher tool

ActionEffect
install(Re)create the launcher and the whale-icon app shortcut (Windows)
openOpen the Web UI in the default browser
statusReport whether the DSH Web server is running

βš™οΈ Configuration

Override the plugin row in your profile's cordis.patch.yml (e.g. ~/.dsh/profiles/web/cordis.patch.yml). A patch replaces the whole row config, so restate the keys you keep:

- id: dsh-web-launcher
  config:
    autoInstall: true          # create/refresh the launcher on activation (default true)
    createShortcut: true       # also create/refresh the app shortcut (default true)
    port: 3080                 # Web UI port (default 3080)
    shortcutName: Start-DSH-Web.cmd              # launcher file name (default)
    linkName: DeepSeek Harness Web.lnk           # app shortcut name (default)
    launcherDir: ""            # launcher folder; empty = %LOCALAPPDATA%\dsh-web-launcher
    desktopDir: ""             # desktop folder; empty = auto-detect

πŸ”§ How it works

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  DeepSeek Harness Web     │──▢│  cmd /c Start-DSH-Web.cmd     β”‚
β”‚  (desktop .lnk, whale ico)β”‚   β”‚  (hidden in %LOCALAPPDATA%)   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                β”‚
                        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                        β–Ό                       β–Ό                       β–Ό
                 where dsh?             port listening?          start dsh web
                 (friendly error)      (open browser)           (poll β†’ open browser)
  • cordis.patch.yml β€” declares the dsh.bundle manifest; dsh plugin add auto-reconciles it into the profile's bundle stack.
  • lib/launcher.js β€” template rendering (pure ASCII), desktop/launcher directory resolution, port probing (fetch + timeout), .lnk creation via WScript.Shell.
  • lib/index.js β€” Cordis plugin (name / inject: ['tools'] / Config schema) + the defineTool-based web_launcher tool.
  • tools/make-icon.mjs β€” regenerates the multi-size whale.ico (SVG β†’ PNG β†’ PNG-in-ICO) from the official Harness favicon silhouette.
  • tools/make-banner.mjs β€” regenerates this README's hero banner.

❓ FAQ

Q: Will this run my commands as admin? No. The launcher runs dsh web with your normal user permissions.

Q: Does it interfere with the running server? No. It detects the listening port and skips straight to the browser.

Q: Why is the launcher a .cmd and not an exe? Zero dependencies, no build chain, trivially auditable β€” 60 lines you can read before running.

Q: Non-Windows? The tool stays registered (status/open work anywhere); the desktop shortcut is Windows-only by design.

⭐ Support

If this plugin saves you even a few seconds a day, star the repo β€” it helps other people find it, and it tells the maintainer the friction tax was worth deleting.

GitHub Stars

Found a bug or want a feature? Open an issue β€” PRs welcome.

πŸ—‚οΈ Project layout

dsh-web-launcher/
β”œβ”€β”€ lib/                  # plugin code (ESM, zero runtime deps)
β”‚   β”œβ”€β”€ index.js          # Cordis plugin + web_launcher tool
β”‚   β”œβ”€β”€ launcher.js       # template, shortcut, status, browser helpers
β”‚   └── template.cmd.txt  # the ASCII launcher template
β”œβ”€β”€ icons/                # whale.ico + multi-size PNGs (generated)
β”œβ”€β”€ assets/               # banner.svg, favicon.whale.svg (icon source)
β”œβ”€β”€ tools/                # icon/banner generators (sharp)
β”œβ”€β”€ tests/                # node:test unit tests
└── install.ps1           # standalone install (no dsh required)

πŸ“œ License

MIT β€” see LICENSE.