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-tui profile; headless optional) — it never loads the web profile's user plugins;
  • inert: one row, zero runtime dependencies, inject: ["skills"] only; removal is always a single dsh plugin remove dsh-web-rescue;
  • human-readable fallback: when both surfaces are down (broken home-layer cordis.patch.yml or settings.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-configdsh --profile web --dump-default-configdsh plugin --profile web remove <pkg> → or disabled: true in cordis.patch.ymldsh 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_HOME and 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.