dsh-web-rescue
August 24, 2026 · View on GitHub
One-command rescue kit for a broken DSH web UI: the webui-rescue skill plus
the guardian recovery script.
Why install into dsh-tui, not web
dsh web mounts the whole plugin tree in one shot — any plugin's import or
activation failure exits the whole process, including a rescue plugin living
in the web profile itself. So this plugin is:
- installed on the surviving surface (the independent
dsh-tuiprofile; headless optional) — it never loads the web profile's user plugins; - inert: one row, zero runtime dependencies,
inject: ["skills"]only; removal is always a singledsh plugin remove dsh-web-rescue; - human-readable fallback: when both surfaces are down (broken home-layer
cordis.patch.ymlorsettings.yaml), no agent can read a skill — only the human + this README + guardian. This repo therefore ships all three: SKILL.md (agents), README (humans), guardian (tool).
Install
dsh plugin --profile dsh-tui add github:Harris-Logic/dsh-web-rescue # primary
dsh plugin --profile headless add github:Harris-Logic/dsh-web-rescue # optional
dsh plugin --profile web add github:Harris-Logic/dsh-web-rescue # optional
curl -fsSL https://raw.githubusercontent.com/Harris-Logic/dsh-web-rescue/main/guardian/guardian \
-o ~/.local/bin/guardian && chmod +x ~/.local/bin/guardian
Use
In any surviving agent surface (e.g. dsh --profile dsh-tui), say:
The web UI is down — diagnose and fix it.
The agent loads the webui-rescue skill: triage compose-vs-mount stage with
--dump-config, remove/disable the offending plugin (dsh plugin remove,
disabled: true patches), or run guardian boot / guardian rollback, then
verify before you restart dsh web.
Manual ladder (human, no agent): dsh --profile web --dump-config →
dsh --profile web --dump-default-config → dsh plugin --profile web remove <pkg> → or disabled: true in cordis.patch.yml → dsh web --patch recovery.yml.
guardian
guardian/guardian is a zero-dependency bash toolkit: snapshot / rollback
(config snapshots before plugin changes, rollback after), install / remove
(snapshotting plugin management), boot (safe boot: compose precheck →
disable-all-user-plugins overlay retry → auto rollback), status. Honors
$DSH_HOME and --profile; state in ~/.dsh-guardian/.
Boundaries
- No DSH core modifications; only the config files under
$DSH_HOMEand the~/.dsh-guardian/state dir are touched. - Snapshots contain only
package.json,cordis.patch.yml,pnpm-workspace.yaml,settings.yaml— never credentials or sessions. - Open source (MIT); a single inert skill-provider row; install from this repository's releases only.