Introduction

DeepSeek Harness (DSH) is a plugin-based system. Developers usually build it locally and use it through a Web UI or CLI. If you need to deploy Harness as a standalone desktop application, working directly with the Electron packaging layer can be cumbersome.

The dsh-desktop-packager plugin solves this problem. It packages a built Harness checkout with Electron, generates .app and .dmg files, and allows customization through Web Settings.

Core Features

  1. Desktop Packaging Tool: Registers the tool dsh_package_desktop to package a built deepseek-harness into .app + .dmg.
  2. Web Configuration UI: Adds a “Desktop Packaging” menu under Settings in dsh web, with 4 tabs:
    • Design Scheme: Configure app name, Logo, theme color, and background color.
    • Plugin Settings: Select the plugins to package into the app.
    • Model Settings: Select the models to package into the app.
    • Permission Settings: Configure user accounts, passwords, and permissions.
  3. Customization:
    • Theme variable injection: Supports custom colors and injects them into Electron theme variables.
    • Plugin and model filtering: Implements runtime filtering by writing to DSH_HOME/desktop-config.json.
    • User login control: Implements a login gate in Electron, with passwords stored as scrypt salted hashes.
  4. Host-Client Architecture: Uses a dual-end architecture with Host (native TS) and Client (browser bundle). The Host provides services and tool registration, while the Client provides the Web UI.

Installation

Run the following command in the terminal to install the plugin:

dsh plugin --profile web add /path/to/dsh-desktop-packager

After installation, restart dsh web to apply the configuration.

Usage Steps

  1. Configure packaging parameters: Open dsh web and go to the “Desktop Packaging” menu under Settings. In “Design Scheme,” set the app name, Logo path, and theme color; in “Plugin Settings” and “Model Settings,” select the items to include; in “Permission Settings,” configure users and permissions.
  2. Execute the packaging command: Invoke the registered tool dsh_package_desktop. Example parameters:
dsh_package_desktop \
  --dshCheckoutDir /path/to/deepseek-harness \
  --out ~/Desktop/DeepSeek-Harness-dist \
  --appName "DeepSeek Harness" \
  --bundleId com.deepseek.harness \
  --arch arm64

The packaging tool reads the configuration from Web Settings and generates a customized desktop application.

Notes

  • Runtime environment: Requires macOS and Node.js version ≥ 22.19.
  • Dependencies: A built deepseek-harness checkout is required (containing apps/cli/lib/bin.js and apps/web/dist).
  • Signing and distribution: Uses ad-hoc signing by default. Distribution to other users requires Developer ID signing and notarization.
  • Security: User passwords are stored only as scrypt salted hashes and are never stored in plaintext.
  • Configuration file: Customization state is saved in ~/.dsh/desktop-packager/config.json. Restarting the service is recommended after changing source code or configuration.

Conclusion

dsh-desktop-packager enables DSH users to package their local development environment into a standalone macOS app. It is suitable for scenarios where specific configurations need to be distributed or Harness needs to be privately deployed.