Skip to content

kyorakuyk/dsh-hotreload-plugin-manager

30Last commit Aug 15, 2026

dsh-hotreload-plugin-manager DSH plugin

This plugin adds a new tab in the DSH web settings UI for managing other plugins. It supports hot installation, unloading, and toggling of plugins via spec (npm, git, path). It works entirely out-of-tree, requiring no modifications to the core DSH checkout.

How to install the dsh-hotreload-plugin-manager DSH plugin

dsh plugin --profile web add "github:kyorakuyk/dsh-hotreload-plugin-manager

Copying does not run this command. Review the repository and version before installing the dsh-hotreload-plugin-manager DSH plugin.

dsh-hotreload-plugin-manager DSH plugin data source

dsh-hotreload-plugin-manager DSH plugin snapshot date: Aug 16, 2026

discovered

What the dsh-hotreload-plugin-manager DSH plugin can do

  • Hot install: install a plugin bundle from npm, git URL, GitHub shorthand, or local path, and it takes effect immediately on the running dsh web instance.
  • Hot uninstall: remove a bundle and clean up its dependencies, patch entries, and fiber from the runtime.
  • Disable/enable: toggle the enabled state of an installed bundle via the UI, with persistence and immediate effect.
  • Hot update: replace patch entries and reapply configuration (though module code changes still require restart due to Node caching).
  • Zero kernel changes: pure out-of-tree bundle, no modifications to dsh checkout.
  • Dual-sided: the same npm package works as both a host gateway (Node) and a browser settings tab (React).
  • HTTP API: provides REST endpoints for list, install, uninstall, update, and setEnabled operations.

Where the dsh-hotreload-plugin-manager DSH plugin fits

  • Quickly install a community plugin into a running DSH web instance without restarting the server.
  • Remove or disable plugins that are no longer needed or causing conflicts, with immediate effect.
  • Develop and test plugin bundles locally by using file: path specs and hot-updating the configuration.
  • Manage plugin lifecycle from a graphical web UI instead of CLI commands.
  • Update a plugin to a newer version and see the configuration changes applied immediately.

Who the dsh-hotreload-plugin-manager DSH plugin is for

  • DSH users who want to manage plugins conveniently without restarting the server.
  • Plugin developers who need to iterate quickly on bundle patches and test them in a live environment.
  • System administrators managing multiple DSH profiles and plugin dependencies.

dsh-hotreload-plugin-manager DSH plugin limitations

  • Remote trust: the /plugin-manager routes are open to anyone who can reach the server; no authentication is enforced (only loopback binding by default).
  • Mixed use with CLI: if you also use dsh plugin CLI on the same bundle, the manager may not reconcile correctly; each bundle should use only one mechanism.
  • Module code updates require restart: Node caches resolved modules, so code changes in a bundle need a process restart to take effect.
  • Entry ID conflicts: if a bundle's patch entry IDs conflict with existing user-layer entries or other bundles, installation is rejected.
  • No plugin marketplace: installation is spec-driven; browsing and discovery are not yet implemented.

dsh-hotreload-plugin-manager DSH plugin: from the repository README

Quoted from the kyorakuyk/dsh-hotreload-plugin-manager README, the upstream source of the dsh-hotreload-plugin-manager DSH plugin. Copyright remains with the original authors.

中文 | [English](README.en.md) 一个**树外(out-of-tree)**[DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 插件:在**运行中的实例上直接完成插件的热安装、热卸载、禁用/启用——无需重启**, 并提供 Web 设置页标签页: - **🔥 热安装**:按 spec(npm 包名 / git URL / `github:owner/repo` / `file:` 路径) 安装插件 bundle,立即热生效于运行中的 `dsh web`,且重启后保留。 - **🔥 热卸载**:移除 bundle——行与 fiber 即刻卸载、依赖被清理、陈旧的 bundle 层条目一并移除。 - **🔥 禁用 / 启用**:在 UI 上一键切换已安装 bundle 的条目开关,状态持久化且立即生效。 - **热更新**:热替换 bundle 的补丁行并实时重放配置(模块代码变更按 Node 进程内 缓存特性仍需重启)。 - **零内核改动**:纯树外 bundle,dsh checkout 完全不被触碰。 - **双面包**:一个 npm 包同时是 host 网关与浏览器设置标签页。 ## 架构 ``` ┌────────────────────────────── 浏览器(React)──────────────────────────────┐ │ 设置 → 插件 → "插件管理"标签页(槽位 settings.plugins.tab) │ │ │ fetch('/plugin-manager/*') │ └────────┼──────────────────────────────────────────────────────────────────┘ ▼ ┌──────────────────────────── dsh web 进程 ──────────────────────────────────┐ │ webserver 路由(node:http)──▶ manager 核心 │ │ ① pnpm add/remove(profile 内的真实依赖) │ │ ② 行写入 profile 用户补丁层(cordis.patch.yml) │ │ ③ 根 Include entry.upda

Read the full READMERepository license: MIT

dsh-hotreload-plugin-manager DSH plugin questions

How do I install this plugin manager?

Run `dsh plugin --profile web add "github:kyorakuyk/dsh-hotreload-plugin-manager"` or use the npm package `@kyorakuyk/dsh-plugin-manager`. After installation, restart the dsh web instance and hard refresh the browser (Ctrl+Shift+R). Then open Web UI → Settings → Plugins → Plugin Manager to start managing other plugins.

Can I install any npm package as a plugin?

No, only packages that declare `"dsh": { "bundle": { "patch": "./cordis.patch.yml" } }` in their package.json are installable. The manager will reject packages without this property and automatically roll back (pnpm remove).

Does the plugin manager support disabling a plugin temporarily?

Yes, in the Plugin Manager tab you can click the disable/enable button next to any installed bundle. The state is persisted and takes effect immediately. Disabled rows are marked as '(Disabled)' in the UI.

What if I get a "could not resolve the installed package name" error when installing from a git URL?

This means the manager could not determine the package name from the installed node_modules. Ensure the git URL points to a valid npm package with a proper package.json. If the issue persists, try using the `file:` path after cloning the repository locally.

Do I need to restart dsh after installing a plugin via this manager?

No, the plugin is hot-installed and takes effect immediately on the running instance. However, for module code changes (e.g., after an update), a restart is required because Node caches the resolved modules. Also, the first installation of the manager itself requires a restart to load the new bundle.