Preface

In the development workflow of DeepSeek Harness (DSH), pnpm dsh web is the standard command for starting the local development server. In practice, however, keeping the terminal window open to keep the server running, manually restarting it after code updates, and extracting tokenized URLs from logs all create cumbersome ritualistic operations. DSH Launcher aims to solve this by encapsulating server start, restart, stop, and browser navigation into a macOS menu bar app, allowing you to manage the development server without terminal intervention.

What Is It

songer522/dsh-launcher is a macOS menu bar tool for DeepSeek Harness. It allows developers to directly control the lifecycle of the local development server (start, stop, restart) from the menu bar, without opening a terminal or keeping a tab open. The tool includes a companion DSH plugin that publishes the running server port, process ID (PID), and tokenized URL to the menu bar app.

Core Features

  1. macOS menu bar app: The app exists as a status bar icon, has no Dock icon, and runs persistently in the background.
  2. No terminal operations required: Supports starting, restarting, and stopping the server; all operations are completed through the menu or clicks.
  3. Information publishing: Through the companion DSH plugin, it automatically retrieves the running server port, process ID (PID), and tokenized URL.
  4. Highly configurable: Supports custom startup commands, port numbers, working directory, and default browser.
  5. Native implementation: Built with native AppKit, implemented in a single Swift file, with no external dependencies.

Installation and Activation

Before installing, ensure the environment meets the following requirements: macOS 13+ and Xcode Command Line Tools installed.

  1. Install the DSH plugin (recommended):
    The plugin is installed to the web configuration file by default.
dsh plugin --profile web add https://github.com/songer522/dsh-launcher/releases/latest/download/dsh-menubar-launcher.tgz

After installation, restart the server to make the plugin effective.

  1. Install the menu bar app:
    Clone the code from the GitHub repository and run the build script.
git clone https://github.com/songer522/dsh-launcher.git
cd dsh-launcher
./build.sh

After building, the app is automatically installed to /Applications and appears in the menu bar.

Configuration

The configuration file is located at ~/.config/dsh-launcher/config. On first run, the app tries to find the DeepSeek Harness project in common working directories (such as ~/Workspace, ~/Projects, etc.). If the project is in a different location, you can manually specify it in the app’s preferences.

Configuration items include:
* repo: working directory
* command: startup command, supports the {port} placeholder
* port: listening port
* browser: default browser
* logFile: log file path

Notes

  1. Plugin dependency: The menu bar app can work without the plugin; it reads the logs of the server it started to obtain the port and PID. However, to support servers started from the terminal, it is recommended to install the plugin.
  2. Permission execution: The plugin runs with the permissions of the current DSH process. Please ensure it is installed from a trusted source and review the source code.
  3. Configuration file: The plugin configuration file is located at ~/.config/dsh-launcher/runtime.json. If the file does not exist, the server has not been restarted or is not running.
  4. Status bar interaction: The menu bar icon polls the server status every 3 seconds; it is solid when running and dimmed when stopped.

Conclusion

DSH Launcher transforms the terminal ceremony of DeepSeek Harness into one-click menu bar operations, reducing the mental effort spent on maintaining server state. For macOS users who frequently use DSH for local development, it is a practical efficiency-enhancing tool.

Directory link: https://www.skillhub.cn/plugins/songer522/dsh-launcher
GitHub link: https://github.com/songer522/dsh-launcher