Preface

During task execution, DeepSeek Harness (DSH) often requires manual intervention, such as permission confirmation, interactive prompts, or plan review. When the terminal or browser tab is in the background, these events can easily be missed. dsh-notify is designed to address this pain point by listening to DSH’s event bus and triggering native desktop notifications at key moments, ensuring you don’t miss any step that requires attention.

Core Features

The plugin monitors DSH’s runtime status and sends notifications when the following events occur:
* Permission requests: permissions that require confirmation or sandbox escalation.
* Interactive prompts: ask_user_question prompts or plan review waiting for input.
* Turn/session end: The agent has finished replying and is waiting for the next input.
* Goal status: A goal has been completed or blocked.
* Errors: The session encounters an error.
* Workflow end: tool_workflow execution has ended.

Notification Channels

Multiple notification methods are supported and can be selected based on platform or requirement:
* auto: Default automatic selection (macOS uses osascript, Windows uses PowerShell, others use notify-send).
* osascript / notify-send / powershell: Force a specific system notification.
* bell: Terminal bell (dependency-free fallback).
* custom: Execute a custom command (supports {title}, {body}, and {app} placeholders).
* none: Disable notifications.

Installation and Configuration

  1. Install the plugin into the specified Profile (using web as an example):
dsh plugin --profile web add git+https://github.com/knownothing114/dsh-notify.git
  1. Verify that dsh.profile.bundles includes dsh-notify. If it is not included automatically, manually add it to ~/.dsh/profiles/web/package.json.
  2. Restart the DSH Web service to load the plugin.

The configuration file is located at ~/.dsh/profiles/web/cordis.patch.yml. You can modify the settings by overriding the config for id: dsh-notify:

- id: dsh-notify
  config:
    channel: auto
    appName: dsh
    sound: true
    minIntervalMs: 3000
    rootsOnly: true
    verbose: false
    customCommand: ""
    triggers:
      approval: true
      question: true
      turnComplete: true
      goal: true
      error: true
      workflow: true
    enabled: true
  • rootsOnly: Filters out noise from sub-agents and only sends notifications for root sessions.
  • minIntervalMs: Prevents notifications from being too frequent by setting a minimum interval.

Web Interface Configuration

Under the web Profile, the plugin registers a “Notifications” tab in settings. You can use the graphical interface to toggle the master switch, adjust the channel, sound, triggers, and more. Configuration changes are hot-reloaded without a restart, but a restart is required after the initial installation or an upgrade.

Uninstallation

dsh plugin --profile web remove dsh-notify

You also need to remove the dsh-notify entry from the Profile’s package.json and restart.

Technical Details

  • Zero dependencies: No additional runtime dependencies beyond @deepseek-ai/dsh-settings and @deepseek-ai/schemastery.
  • Pure observer: The plugin does not participate in decision-making; it only listens to events and forwards next(), ensuring the permission chain behaves the same as when the plugin is not installed.
  • Cross-platform: Supports any web, headless, or custom Profile.