Skip to content
dsh.fish
Bundle

dsh-push

Push DeepSeek Harness agent lifecycle notifications to configurable channels

Source
kiim-wong
stars
1 stars
License
MIT
Updated
Updated 5 days ago

Readme

# dsh-push

English | [简体中文](./README.zh-CN.md)

Push DeepSeek Harness agent lifecycle notifications to Bark, Feishu, WeCom, DingTalk, ntfy, or a generic webhook.

## Installation

Install from npm:

```sh
dsh plugin --profile web add dsh-push
dsh plugin --profile headless add dsh-push
```

To install from GitHub, pin the repository to a commit:

```sh
dsh plugin --profile web add github:kiim-wong/dsh-push#<sha>
```

Git installations run the package's `prepare` script. Before the first installation, allow the package to build in the target profile's `pnpm-workspace.yaml`:

```yaml
allowBuilds:
  dsh-push: true
```

The package mounts itself as `dsh-push` through `cordis.patch.yml`. It does not require changes to the dsh monorepo or write to the profile's patch configuration.

## Configuration

The default configuration path is `$DSH_HOME/dsh-push/config.json`. Set `DSH_PUSH_CONFIG` to use another path. Start with [`config.example.json`](./config.example.json). Environment variable references support `$VAR` and `${VAR}`. Logs are written to `push.log` in the configuration file's directory.

Each channel requires at least its type and destination. Keep secrets in the configuration file or environment variables, not in `cordis.patch.yml`.

Supported events are `idle`, `interrupted`, `needInput`, and `exit`. `minDurationSec` filters `idle` notifications but does not affect `interrupted` notifications. Subagents are excluded by default; set `includeSubagents: true` to include agents whose session header has `origin: "subagent"`.

## `/push` command

When the command service is mounted, dsh-push provides `/push status`, `list`, `get`, `set`, `enable`, `disable`, `test`, `events`, `on`, and `off`. Headless compositions without the command service still load the notification event listeners.

## Limitations

Notification delivery is not retried. Each request has an independent timeout, and process teardown uses a bounded flush. dsh has no equivalent of pi's session quit event, so `exit` means the plugin tree is being disposed, not that an individual web session closed. Notification bodies contain lifecycle summaries, not conversation content.

Channel implementations retain the protocols and signing algorithms from pi-agent-push. This package adapts only the event and command layers to Cordis.

Install

dsh plugin --profile web add github:kiim-wong/dsh-push

Profile: web

  • This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source