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 are independent DSH packages with optional Host, Client, and fully trusted Native entrypoints.
Run
End users install a platform artifact from GitHub Releases and launch the application normally. The installed application does not require Node.js or a package manager. This repository is the application source and is not published as an npm launcher.
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.
Source launch and useful options:
corepack pnpm start -- --profile web
corepack pnpm start -- --profile my-profile --devtools
corepack pnpm start -- --profile my-profile --extension @acme/desktop-native
corepack pnpm start -- --profile my-profile --connector @acme/remote --connector-option endpoint=wss://host.example
corepack pnpm start -- --profile my-profile --connector-option startupTimeoutMs=180000
corepack pnpm start -- --profile my-profile --safe-modeNative 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 pnpm-only project. Corepack selects the exact pnpm release declared by the repository:
corepack pnpm install --frozen-lockfile
corepack pnpm run check
corepack pnpm run dev -- --profile webRun the included capability example:
corepack pnpm run example -- --profile webExtension 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](docs/architecture.md), [extension authoring](docs/extensions.md), [development and packaging](docs/development.md), and [security policy](SECURITY.md).
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.
- Process-based Host tools do not create visible console windows on Windows.
- 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](LICENSE).