Introduction

DeepSeek Harness (DSH) provides a Web interface for debugging and developing agents. On macOS, you usually need to manually enter dsh web in the terminal to start the service, and manage process startup, shutdown, and log viewing by yourself. dsh-start encapsulates these operations into a unified command-line tool and provides the ability to generate a Dock-able application, reducing repetitive work.

Plugin Overview

dsh-start is a launcher plugin for DeepSeek Harness (DSH) Web on macOS. It provides a set of terminal scripts (supporting startup, stopping, status query, and background execution) and a build script that can generate DSH.app. The plugin is maintained by user zhengjy01 and aims to simplify DSH Web operations.

Core Features

  • One command, four modes: supports foreground execution (visible logs, stop with Ctrl+C), background daemon execution (logs output to a file), stopping the service, and querying service status.
  • Repeated startup protection: detects whether the default port 3080 is already in use. If the service is already running, it directly opens the browser, avoiding the launch of multiple instances.
  • Automatic browser launch: after the service starts and is ready, it automatically opens http://127.0.0.1:3080.
  • Normal-app feel: generates ~/Applications/DSH.app via the --build-app command. The application has a Dock icon, starts with a double click, can be stopped with Cmd+Q (with a confirmation dialog), and clicking the Dock icon again checks service status and opens the browser.
  • Permission-safe design: to avoid EPERM permission errors caused by the macOS sandbox or TCC, the built App delegates command execution to Terminal rather than calling dsh directly.

Installation and Enablement

Installing this plugin requires Node.js to be installed on the system, with a version of 18 or higher.

npm install -g dsh-start

Typical Usage

After installation, you can use the following commands to manage the DSH service.

  1. Start in foreground: runs in the current terminal, logs are visible in real time, and you can stop it with Ctrl+C.
    dsh-start
  1. Start in background: the service runs in the background, and logs are saved to ~/.dsh/web.log.
    dsh-start -d
  1. Stop the service: automatically finds and terminates the process based on the port.
    dsh-start stop
  1. Check status: checks whether the service is running and the access address.
    dsh-start status
  1. Build Dock application: generates ~/Applications/DSH.app.
    dsh-start --build-app
(The build script relies on Python3 and Pillow to generate icons.)

Suitable Scenarios and Notes

  • Suitable scenarios: macOS users who want to manage DSH Web like ordinary software, or who frequently start/stop the service and want the browser to open automatically.
  • Permission issue: on first launch of DSH.app, macOS may prompt “DSH wants to control Terminal”; you need to click “Allow”.
  • Session data: after restarting, the session list in the sidebar may appear empty. In reality, session data is stored in ~/.dsh/sessions; if the service started by the App crashes, restarting it from the terminal will restore it.
  • Error handling: if EPERM: operation not permitted appears, please use dsh-start --build-app to regenerate the application, or start it directly from the terminal using the command line.

Conclusion

By scripting and app-ifying the workflow, dsh-start addresses the basic operational pain points of DSH Web on macOS. For developers accustomed to the terminal or in need of quick start/stop, it provides necessary convenience.