A local-first, cross-platform desktop shell for DeepSeek Harness.
Beyond official DeepSeek models, DSH Desktop supports mainstream third-party model providers—with more DSH-powered desktop experiences coming soon.
DSH Desktop packages the local DeepSeek Harness web experience as a desktop application. It launches a local Harness instance automatically, manages a random loopback port, persists profiles, plugins, and sessions, and opens the full interface as soon as Harness is ready. Project workspaces are added and managed entirely in the Harness interface.
Important
DSH Desktop is currently an early preview and depends on the rapidly evolving @deepseek-ai/dsh@0.1.0-rc.6. macOS releases are code-signed and notarized by Apple; current installers are distributed through the official website.
Download DSH Desktop for macOS and Windows from the official website.
Installed macOS and Windows builds check for updates automatically after startup and every six hours. Updates download in the background and prompt you to restart when they are ready. You can also choose Check for Updates… from the application menu.
DeepSeek Harness already provides a complete agent runtime and Web UI. DSH Desktop does not reimplement Harness; it supplies the host capabilities needed for a desktop product:
- Run without manually starting a CLI or managing local ports
- Create an application-owned Harness launch directory automatically at startup
- Add and manage project workspaces through Harness's built-in directory picker
- Manage the Harness child process, readiness checks, logs, and shutdown in one place
- Store profiles, plugins, and sessions outside the application installation directory so upgrades do not remove user data
- Provide packaging entry points for macOS and Windows
- Opens directly into Harness without an additional landing page
- Starts without an initial directory prompt by creating and reusing an internal launch directory
- Offers retry, log viewing, and exit actions when Harness fails to start
- Provides Harness menu actions for restarting the child process and viewing its log
- Gracefully terminates the Harness child process when the desktop app exits
- Listens only on a random
127.0.0.1port for each launch - Removes Node.js privileges from the renderer and enables
contextIsolation, sandboxing, and navigation restrictions - Uses the DSH brand logo consistently in the desktop window and Harness sidebar
- Includes a production DSH app icon in macOS ICNS and Windows ICO formats
During initial setup, you can choose a model provider and enter its API key directly. DSH Desktop uses the real Harness Settings and Credentials APIs: the key is written only to the credential store, the corresponding provider route is created automatically, and its built-in model catalog is inherited without requiring model IDs to be entered manually.
The initial setup currently includes:
| Type | Providers |
|---|---|
| Model vendors | DeepSeek, OpenAI, Anthropic, Google Gemini, xAI, Moonshot/Kimi, MiniMax, Zhipu GLM, Mistral AI |
| Model aggregation | OpenRouter |
| Inference platforms | Groq, Together AI |
Additional built-in or custom providers can be added from Settings → Models in Harness.
- Node.js 22 or later
- npm
- macOS on Apple Silicon or Intel, or Windows x64
git clone https://github.com/dataelement/dsh-desktop.git
cd dsh-desktop
npm install
npm run devnpm install runs patch-package to reapply DSH Desktop's model-provider onboarding and sidebar branding, installs the brand asset, and then installs the Electron runtime.
npm test
npm run typecheck
npm run build# Generate unsigned DMG and ZIP artifacts for the current Mac architecture
npm run package:mac
# Run each command on a Mac or CI runner with the matching architecture
npm run package:mac:arm64
npm run package:mac:x64
# Generate NSIS and Portable artifacts on a Windows x64 machine or runner
npm run package:winHarness includes architecture-specific native modules. Dependencies must be reinstalled and built on the matching platform for macOS ARM64, macOS Intel, and Windows x64. The architecture-specific scripts validate the current platform/arch before packaging to prevent artifacts that appear successful but are missing native dependencies.
DSH Desktop (Electron Main)
├── Application-owned launch directory
├── Harness child-process lifecycle
├── Random loopback port and readiness checks
├── Native logging and recovery actions
└── Hardened BrowserWindow
└── http://127.0.0.1:<random> DeepSeek Harness Web UI
Electron userData
├── launch-root/
├── logs/harness.log
└── harness/
├── profiles/
├── sessions/
└── Plugins and user data
Harness runs in a separate Electron Node child process. The --expose-internals permission required by Cordis HMR is granted only to that child process and never to the web renderer.
src/main/ Electron main process, windows, and Harness lifecycle
src/shared/ Shared runtime types
patches/ Reproducible UI customizations for the pinned DSH version
scripts/ Brand-asset installation and target-platform packaging checks
test/ Settings, runtime, security, and provider coverage tests
build/ Application icon assets
- macOS Apple Silicon: development workflow, real Harness startup, DMG packaging, code signing, Apple notarization, and mounted artifact verified
- macOS Intel: packaging configuration and platform checks provided; runtime verification still requires an Intel Mac or runner
- Windows x64: NSIS/Portable configuration and platform checks provided; runtime verification still requires a Windows runner
- Windows ARM64: not currently supported
- Automatic updates: not yet integrated
The project currently pins @deepseek-ai/dsh@0.1.0-rc.6. The initial provider list is captured with patch-package under patches/ rather than relying on untracked changes in node_modules.
When upgrading DSH:
- Verify the upstream Settings, Credentials, and Provider Directory contracts.
- Reapply or rewrite the customized onboarding interface.
- Regenerate the patch.
- Run regression checks against a real Harness startup and provider configuration flow.
Issues and pull requests are welcome. Before submitting a change, run at least:
npm test
npm run typecheck
npm run buildNever include real API keys in issues, logs, screenshots, or test data.
This project is open source under the MIT License.
DeepSeek Harness and its dependencies remain subject to their respective upstream licenses and trademark policies. DSH Desktop is an independent community desktop wrapper.
