dsh-desktop-min
dsh-desktop-min is a minimal, product-neutral, extension-first desktop shell for DeepSeek Harness. It starts an ordinary Web-capable DSH profile in a secure Electron window and supplies the smallest runtime needed for third-party desktop extensions.
The core does not implement Agents, workspaces, product UI, embedded pages, tray menus, updates, custom chrome, notifications, or remote hosting. Those features can be shipped without modifying the core as DSH packages with optional Host, Client, and fully trusted Native entrypoints.
Status
0.1.0 is a prerelease foundation targeting DeepSeek Harness 0.1.0-rc.7, Electron 43.4.0, Node.js ^22.19 || >=24, Windows x64, and macOS x64/arm64. The protocol and Native API make no compatibility promise before the first stable release.
Run
Install for an end user with npm:
npm install --global dsh-desktop-min
dsh-desktop-min --profile web
The launcher applies its Host bridge only for that run when the selected profile has not installed the bundle. Existing DSH profile composition remains owned by the official dsh CLI.
Useful options:
dsh-desktop-min --profile my-profile --devtools
dsh-desktop-min --profile my-profile --extension @acme/desktop-native
dsh-desktop-min --profile my-profile --connector @acme/remote --connector-option endpoint=wss://host.example
dsh-desktop-min --profile my-profile --connector-option startupTimeoutMs=180000
dsh-desktop-min --profile my-profile --safe-mode
Native extensions listed by the profile's DSH bundles are discovered automatically. --extension adds an explicit package or directory. --safe-mode skips all external Native entries. The built-in local connector accepts startupTimeoutMs from 1,000 through 600,000 milliseconds for unusually large cold-start profiles; its default remains 60,000 milliseconds.
Develop
This is a single-package npm project and does not require Corepack:
npm install
npm run check
npm run dev -- --profile web
Run the included capability example:
npm run example -- --profile web
Extension model
A package may use ordinary DSH metadata for its Host and Client plugins and add a full-trust Native entry:
{
"name": "@acme/dsh-desktop-feature",
"version": "1.0.0",
"dshDesktopMin": {
"apiVersion": 1,
"native": "./lib/native.js",
"trust": "full"
}
}
The Native entry can:
- register an entirely new JSON capability for Host and Client callers;
- register a replaceable Host connector;
- read Host contributions and execute Host commands;
- observe or configure the main window;
- acquire background lifetime for tray-style extensions;
- use the complete Electron API under the package's explicit full-trust declaration.
Regular Host and Client plugins never receive Node.js, raw Electron, raw IPC, or a BrowserWindow. The renderer preload exposes only capability discovery, JSON method calls, Host command execution, and capability events.
See architecture, extension authoring, development and packaging, and security policy.
Design principles
- Minimal defaults and broad extension mechanisms are separate goals.
- DSH remains responsible for Profiles, bundles, Agent behavior, and Web Client composition.
- Every cross-process payload is finite JSON and every public id is validated.
- The main DSH renderer stays sandboxed with context isolation and no Node integration.
- A remote connector must return a trusted loopback Client URL, normally through a local proxy or tunnel; the core never grants its preload to an arbitrary remote page.
- Native entries are local code with the same trust implications as the application itself.
License
MIT. See LICENSE.