Jesse-njx/dsh-routines

dsh-routines runs scheduled agents: a routine is a named prompt + schedule + delivery stored as a YAML file under .dsh/routines/ (5-field cron, plus @daily / 'every 4h'; explicit timezone, no silent host default). The scheduler launches each due run through the headless runner as its own one-shot session — full session log equals full audit, replayable later by dsh-replay — then delivers a digest: the last assistant message when short, otherwise a one-shot summarizer call over the session log. Overlap policy is per-routine (skip / queue / cancel-previous) with timeoutMin, and delivery is a digest + run record written to .dsh/routines/runs/<runId>.json (+ .md) with optional chatnode delivery (e.g. WeChat) for v0.2; approval policy for runs is 'never'. CLI: dsh --profile ops routines list|logs.

Other ★ 1 updated 2026-08-28 ✅ runtime-tested
View on GitHub ↗

Install

dsh plugin --profile ops add github:Jesse-njx/dsh-routines

README EN verified 2026-09-02 (repo Jesse-njx/dsh-routines). The scheduler + CLI live in a profile you keep running: dsh plugin --profile ops add github:Jesse-njx/dsh-routines (npm @dsh-routines/bundle labeled 'when published' — 404 not checked since GitHub is the documented real path), then dsh --profile ops (daemon mode; Ctrl-C to stop). Routine runs boot the headless profile by default. A routine is a plain YAML file — human-diffable, git-committable.

Compatibility

DSH ops profile hosts scheduler/CLI; runs execute as one-shot sessions under the headless profile; file delivery always on, chatnode delivery optional.

Details

Recent updates

Named prompt+schedule+delivery YAML routines; 5-field cron/@daily/'every 4h' with explicit tz; one-shot headless sessions; digest delivery (file always, chatnode optional); overlap policy.

FAQ

Where do routines run?
The scheduler lives in a profile you keep running (dsh --profile ops); each due routine boots the headless profile as its own one-shot session with approval policy 'never'.
How is the result delivered?
A digest plus run record is written to .dsh/routines/runs/<runId>.json (+ .md) — always on — and optionally pushed to an installed conversation node (v0.2).
What happens if a run overlaps the previous one?
The per-routine overlap policy decides: skip, queue, or cancel-previous; a timeoutMin bounds each run.

Alternatives

Ceelog/dsh-plugins#dsh-plugin-scheduled-tasks

More plugins in Other

Browse more in Other

Guides for Other plugins