baikangwang
deepseek-harness-desktop
No description
- Stars
- 0
- Language
- Rust
- Created
- Aug 16, 2026
- Updated
- Aug 16, 2026
Introduction
DeepSeek Harness Desktop (DshDesktop)
A professional desktop shell for the DeepSeek Harness Web GUI, built with Tauri 2 (Rust + WebView2).
It is a thin host wrapper, not a fork: it spawns the installed dsh web as a managed child process and loads the served URL in a WebView2 window. It adds what a browser cannot — a real app icon, single instance, tray status, close-to-tray, crash auto-restart, deploy/status observability, and (P2) signed self-update.
Core principle
The shell never bundles DSH. It locates a pinned
dshinstall in a private prefix and spawnsdsh web. DSH upgrades are therefore transparent, and every DSH client-plugin feature appears automatically (the WebView loads the same URL served bydsh web, which injectswindow.__DSH_BOOT__).
Repo layout
ui/ minimal static splash + offline pages
scripts/
ensure-dsh.ps1 first-run: install pinned dsh into the private prefix
release.ps1 P2: build + sign + generate update manifest
src-tauri/ Tauri 2 Rust backend
src/
app.rs setup wiring (plugins, tray, single-instance, lifecycle)
process_supervisor.rs spawn dsh web, parse port from stdout, watch exit
dsh_manager.rs locate node/dsh, build env, version gate
health.rs readiness / liveness probes
lifecycle.rs state machine + restart/backoff strategy
tray.rs tray icon + menu + status colors
commands.rs WebView<->Rust IPC (status / restart / open logs / quit)
config.rs config.json schema + load/save
tauri.conf.json window / bundle(NSIS) / plugins
capabilities/default.json
docs/
ARCHITECTURE.md system/architecture/performance/maintainability design
DEPLOYMENT.md install + upgrade + directory layout design
INTERFACE_CONTRACT.md DSH-side /api/health + /api/admin/shutdown contract
dsd-side/ reference DSH-side plugin package (mounts the two routes)
Prerequisites
- Windows 10 1809+ / Windows 11 (WebView2 Evergreen; the installer bundles the bootstrapper for Win10).
- Rust (stable, MSVC toolchain) + Node.js ≥ 20 (for the Tauri CLI only).
First build (one-time)
# 1. install the Tauri CLI
npm install
# 2. generate icons from a 512x512 PNG (required before `tauri build`)
npm run tauri -- icon ./assets/icon.png
# this creates src-tauri/icons/icon.ico, icon.png, ...
# 3. dev run
npm run tauri -- dev
# 4. production build (NSIS per-user installer)
npm run tauri -- build
How it runs (P1)
main.rs(withwindows_subsystem="windows") launches with no console.app::setuploadsconfig.json, resolves node + dsh, spawnsdsh web --port 0hidden, parses thedsh web: http://127.0.0.1:<port>stdout line.health::wait_readypolls until the server answers, then navigates the WebView to the URL (the splash page shows until then).- Tray icon reflects state (yellow starting / green ready / red error); closing the window keeps it in the tray.
See docs/ for the full design and the DSH-side contract.
Security note
The /api/admin/shutdown route (DSH-side, see dsd-side/) is guarded by a per-boot secret passed via the DSH_DESKTOP_SHUTDOWN_TOKEN environment variable, so only the shell can gracefully stop its own child.