Back to home

rogerhorsley

dsh_for_mac

One-click macOS desktop client for DeepSeek Harness — Electron shell around the local dsh web runtime

Stars
0
Language
TypeScript
Created
Aug 13, 2026
Updated
Aug 14, 2026

Introduction

DSH for Mac

Build License: MIT

A one-click macOS desktop client for DeepSeek Harness.

The Electron shell starts the official local dsh web profile on a private loopback port and renders it in a hardened BrowserWindow. dsh therefore remains the owner of sessions, tools, workspaces, model configuration, plugin installation, and profile patch layers. The desktop client does not implement a second plugin system.

Download

Grab the latest DSH-<version>-mac-<arch>.dmg from Releases. Pick the arm64 build on Apple Silicon and the universal build on Intel Macs — or whenever unsure, since it runs natively on both architectures without Rosetta. The About panel shows the architecture of the running binary.

Development

npm install
npm run dev

pnpm dev starts Electron and initializes dsh's shipped web profile on first use. The selected working directory defaults to the macOS user's home directory; choose or add workspaces from the DSH UI.

Use DSH_CLI_PATH when developing a local checkout of DeepSeek Harness instead of the published launcher:

DSH_CLI_PATH=/absolute/path/to/deepseek-harness/apps/cli/lib/bin.js npm run dev

Build and open the compiled desktop client:

npm start

Create an Apple Silicon distribution (native ARM64, no Rosetta):

npm run package:mac:arm64

Create a universal distribution (runs natively on both Apple Silicon and Intel):

npm run package:mac:universal

The artifacts are named DSH-<version>-mac-arm64 and DSH-<version>-mac-universal. Prefer the arm64 build on Apple Silicon: the universal build also runs natively there but roughly doubles the download size. The About panel identifies the architecture of the running binary, so a mismatch is diagnosable.

The CI workflow runs on ARM64 macOS runners: the arm64 package builds natively and the universal package is cross-compiled and lipo-merged, because GitHub retired its free Intel (macos-13) runners in December 2025. Pushing a v* tag builds both packages and publishes their DMG and zip artifacts to a GitHub Release; tags containing a pre-release suffix (for example v0.1.0-rc.1) are marked as pre-releases. The first package is unsigned. Release distribution still needs an Apple Developer signing identity, notarization, an app icon, and an update feed.

Design

Electron 43 is used because its current startup improvements preserve the existing DSH React UI and runtime-loaded plugin ecosystem. The renderer has no Node integration; all agent authority remains in the local dsh process, and the BrowserWindow only loads its loopback origin.

Contributing

See CONTRIBUTING.md for the development setup and how to submit changes. Report security issues privately following SECURITY.md.

License

This project is licensed under the MIT License.