tianyaZTY/dsh-hot-plugin-host

Runtime plugin loading for the Web UI: a watched hot directory installs/updates client-plugin bundles live on every open page, no restart. Includes a right-column subagent dashboard example.

Loads DeepSeek Harness web client plugins at runtime instead of at boot, so a new UI panel, widget or dashboard goes live without restarting dsh web. It watches a hot directory — ~/.dsh/hot-plugins/<id>/client.js — polls it every ~1.5 seconds, and serves the changed bundle to every open page over a list route plus SSE events; the browser half fetches it, executes it through the standard module loader and mounts it with a full Cordis fiber lifecycle. Overwriting a file invalidates and live-refreshes it, and deleting a directory removes the plugin on the next page load.

Development & Runtime ★ 0 updated 2026-08-14
View on GitHub ↗

Install

mkdir -p ~/.dsh/profiles/web/node_modules
ln -s "$PWD" ~/.dsh/profiles/web/node_modules/dsh-hot-plugin-host
# then add "dsh-hot-plugin-host" to dsh.profile.bundles in ~/.dsh/profiles/web/package.json

README Install block quoted verbatim, including its follow-up that you restart dsh web once because the host half is a boot plugin. The README notes the npm package dsh-hot-plugin-host only exists 'once published'; registry check 2026-09-17 returned 404 for that name, so no npm form or version is asserted. After the one restart, later bundles are dropped into the hot directory instead of the profile.

Compatibility

README: the host half registers /hot-plugins routes on ctx.webServer (list, SSE, bundle serving) and polls the hot directory on mtime+size; the browser half injects loader and mounts fetched bundles through ModuleLoader.load with the full Cordis fiber lifecycle. The README documents the hot-bundle format, which may only require() modules from the client module table (react, react/jsx-runtime, @deepseek-ai/dsh-client-runtime/client, …), and it states the bundle directory name must equal the bundle id.

Details

Recent updates

The README documents the hot-bundle format, the install steps and the security notes rather than a release-by-release table.

FAQ

How do I install it?
The README's steps are to symlink the repo into ~/.dsh/profiles/web/node_modules, add dsh-hot-plugin-host to dsh.profile.bundles in the profile's package.json, and restart dsh web once.
Do I still need to restart for later plugins?
No — the README says only the host itself is a boot plugin; once it is running, dropping a bundle into ~/.dsh/hot-plugins/<id>/ makes it live on every open page within about 1.5 seconds.
Is there an npm package?
The README lists dsh-hot-plugin-host as 'once published'; a registry check on 2026-09-17 returned 404, so use the source install above.

More plugins in Development & Runtime

Browse more in Development & Runtime

Guides for Development & Runtime plugins