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¶
- Install the plugin into the specified Profile (using
webas an example):
dsh plugin --profile web add git+https://github.com/knownothing114/dsh-notify.git
- Verify that
dsh.profile.bundlesincludesdsh-notify. If it is not included automatically, manually add it to~/.dsh/profiles/web/package.json. - 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-settingsand@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, orcustomProfile.