DeepSeek Harness plugin

dsh-tool-notify

DSH plugin: model-facing notify tool (ntfy / webhook / Telegram-style)

Jump to install

Source facts

Repository
rizkirmdhnnn/dsh-tool-notify
Latest update
Aug 14, 2026
Category
Remote & Mobile
GitHub stars
0
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/rizkirmdhnnn/dsh-tool-notify
Plugin: dsh-tool-notify
Author: rizkirmdhnnn

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer3 files
README.mdSource · read only

dsh-tool-notify

A DeepSeek Harness (DSH) plugin that adds a model-facing notify tool. The agent calls it when a long task finishes or something needs attention, and a message is delivered to your notification channel.

Supports two channel types:

  • ntfy (default) — publishes to a topic on an ntfy server (https://ntfy.sh or self-hosted).
  • webhook — POSTs a JSON payload to any generic webhook endpoint.

Status

> Developer preview. DeepSeek Harness is iterating rapidly and breaking changes are expected. This plugin is tested against DSH 0.1.0-rc.6 / cordis 4.0.1 / Node 22.19+. Pin versions when you install.

Requirements

  • Node.js >=22.19 (or >=24)
  • pnpm via Corepack (packageManager: pnpm@11.7.0)
  • A running DeepSeek Harness profile (dsh --profile <name>)

Install

From npm (prebuilt, no build permission needed)

dsh plugin --profile demo add dsh-tool-notify

From GitHub (sources — build runs at install)

dsh plugin --profile demo add github:rizkirmdhn/dsh-tool-notify#<commit-sha>

pnpm ≥10 refuses to run the package's prepare build script until you allow it. dsh prints the exact package key; add it to the profile's pnpm-workspace.yaml:

allowBuilds:
  dsh-tool-notify: true

and re-run the add. That allowance means "run this package's code on my machine at install time" — only add packages whose source you trust, and pin a commit.

From a tarball

pnpm pack
dsh plugin --profile demo add ./dsh-tool-notify-0.1.0.tgz

Configuration

The bundle inserts a row with id notify. Override it in your profile's cordis.patch.yml (later layers win per row; a patch replaces the whole config):

- patch:
    - id: notify
      config:
        endpoint: https://ntfy.sh
        defaultTopic: dsh-alerts
        timeoutMs: 10000
        channel: ntfy
        # tokenRef: NTFY_TOKEN

| Field | Type | Default | Description | |---|---|---|---| | endpoint | string | https://ntfy.sh | Base URL of the ntfy server or the full webhook URL | | defaultTopic | string | dsh-alerts | Topic used when the model does not pass one (ntfy only) | | timeoutMs | number | 10000 | HTTP request timeout | | channel | 'ntfy' \| 'webhook' | 'ntfy' | Channel type | | tokenRef | string | — | Credential reference (env-var style name) for a Bearer token |

Auth via credentials

Secrets never go in config. Set tokenRef to the name of a credential (e.g. NTFY_TOKEN), then configure that credential through DSH's normal credential provider (env var, .env, or the UI). The plugin resolves it once per call through ctx.credentials, so a rotated token reaches the next call without a restart.

Usage

The model sees a notify tool with parameters:

{
  "message": "string (required)",
  "title": "string (optional)",
  "priority": "'min' | 'low' | 'default' | 'high' | 'max' (optional, ntfy)",
  "topic": "string (optional, ntfy override)"
}

A successful call returns { ok: true, status, channel }; a non-2xx response returns { ok: false, status, channel } (not an error). Network failures and timeouts are reported as tool errors.

ntfy

POSTs to {endpoint}/{topic} with body { topic, message, title, priority }.

webhook

POSTs to {endpoint} directly with body { message, title } — no ntfy-specific fields.

Development

pnpm install
pnpm run typecheck
pnpm run test
pnpm run build

The package is a standard DSH bundle: package.json declares "dsh": { "bundle": { "patch": "./cordis.patch.yml" } }, the plugin registers via ctx.tools.register(defineTool(...)), and registrations are effects that unwind when the plugin unloads.

License

MIT