DSH Desktop
English | 中文
deepseek-harness-desktop packages DeepSeek Harness as the native Electron application DSH Desktop. The desktop shell is the product-specific layer; the bundled dsh runtime keeps its plugin system, sessions, tools, PTYs, persistence, CLI identity, and documentation vocabulary.
Native window capture from the installed macOS bundle using an isolated temporary profile and preset sessions, framed against a neutral backing.
Native macOS experience
| Compact native frame Content fills the window while controls share the traffic-light region, with native dragging and full-screen behavior. |
|
| Glass that remembers Light, Dark, and System appearances follow macOS; the glass preference persists, with an opaque Reduce Transparency fallback. |
|
| Zero-width focus mode Collapse the sidebar completely to reclaim the conversation width, then restore the last usable sidebar size. |
Desktop shell, full harness
Bundled runtime The installed app starts its own application-scoped DSH child. A system Node.js or separately installed DSH CLI is not required. |
Private desktop carrier The sandboxed renderer crosses a context-isolated preload bridge and validated IPC. The desktop profile opens no browser-facing HTTP listener. |
Native macOS shell Electron main owns directory selection, path opening, compact window chrome and native dragging, recovery, and process-tree cleanup; the sidebar uses the saved glass preference. |
Shared DSH state DSH Desktop and the CLI use the same ~/.dsh home, so sessions, profiles, and configuration remain available to both. |
How it works
The React client retains the transport-neutral Connection surface used by the Web product. Electron main owns the native window and supervises one dedicated DSH child; that child owns Cordis, sessions, plugins, model execution, PTYs, persistence, and subprocesses.
The pre-decoupling carrier, lifecycle, packaging, native-action, recovery, and installed-app acceptance contracts remain in the frozen legacy desktop reference; the decoupled shell and desktop provider contracts land with their owning slices (apps/desktop, packages/).
Install
Homebrew (recommended)
brew tap mel0nyrame/dsh
brew install --cask dsh-desktop
The cask selects the arm64 or x64 build for the current Mac and removes the quarantine attribute after installation. Stable releases update the cask automatically; prereleases remain available from GitHub only.
GitHub Releases
Download the DMG for your Mac (arm64 for Apple silicon or x64 for Intel) from GitHub Releases, verify it against the adjacent .sha256 file, and drag DSH Desktop to Applications.
Release DMGs are ad-hoc signed and not notarized. A direct DMG download may therefore require the one-time macOS right-click → Open flow. The Homebrew cask performs the corresponding quarantine handling during installation.
Run from source
From this repository checkout:
pnpm install
pnpm run check
The dev:desktop and packaging commands return with the decoupled runtime and shell slices; until then the frozen pre-decoupling product remains on the legacy branch.
Project boundaries
- DSH Desktop shell — the Electron shell role and its boundary.
- Desktop product packages — ownership and dependency rules for
@dsh-desktop/*. - Frozen official monorepo source — the pre-decoupling product and the official core, preserved for comparison and recovery.
- Frozen legacy desktop reference — Electron architecture, security, lifecycle, packaging, acceptance, and limitations as shipped pre-decoupling.
- Pinned upstream source — the exact official DeepSeek Harness source at
dsh-v0.1.0-rc.8, for inspection and compatibility work. - Upstream repository — the original DeepSeek Harness project this desktop repository is based on.
Status and distribution
- The repository and application are under active development; compatibility-breaking changes remain possible.
- Product releases provide separate arm64 and x64 macOS DMGs with SHA-256 checksum files.
- Developer ID signing and notarization are not configured; direct downloads may need the one-time right-click → Open flow described above. Read the legacy desktop limitations before redistributing artifacts.
Development
Core contributor workflows remain in AGENTS.md; the frozen development guide and CONTRIBUTING.md document the pre-decoupling contribution flow. Desktop-specific implementation lives under apps/desktop and the desktop provider packages (packages/).
License
Third-party dependencies and their licenses of the pre-decoupling product are disclosed in the frozen THIRD_PARTY_NOTICES.md; the decoupled product's notice list lands with the packaging slice.