Introduction

DeepSeek Harness (DSH) adopts the “everything is a plugin” philosophy and manages plugin behavior through configuration files. In existing practices, managing plugin entries (such as enabling/disabling) or installing new packages through the Web interface usually requires file operations or restarting the process. The dsh-plugin-manager described below provides a secure, loopback-only Web UI for managing the plugins in the currently active Web profile.

Plugin Identification

  • Name: leonardoxr/dsh-plugin-manager
  • Description: Safe loopback-only Web UI for managing DeepSeek Harness profile plugins
  • Maintainer: leonardoxr
  • License: MIT
  • Category: Client

Core Features

After installation using the steps above, this plugin adds the following capabilities to the DSH Web interface:

  1. Entry Control

    • Enable or disable mutable entries from the currently active Web profile, including entries that ship with the system.
    • Remove its own explicit override configuration to restore entries to the default state of the combined profile.
  2. Hot Mounting

    • Install and hot mount secure single-entry DSH packages without restarting the DSH Web process.
  3. File Protection

    • In $DSH_HOME/profiles/web/cordis.patch.yml, leave the rest of the file byte-for-byte unchanged, except for one clearly marked managed block.
  4. Security Boundaries

    • Use a plugin-owned connection RPC channel registered with authority: loopback.
    • When accessed over a LAN or Tailscale, the Web UI only displays a read-only access message and does not expose lifecycle or package operations.
    • Reject disabling itself or the Web transport/UI/live configuration reload chain.
    • Reject ambiguous duplicate patch IDs and entries outside the profile tree.
  5. Package Installation

    • Accept npm registry package names with an optional version or dist-tag.
    • Use DSH’s public child-process service to launch pnpm without a shell and with a credential-scrubbed environment.
    • Disable package lifecycle scripts and restrict captured output.

Installation

Installing this plugin requires adding the prebuilt release package to the Web configuration file. After installation, DSH Web must be restarted once, because profile extensions are scanned at startup.

dsh plugin --profile web add https://github.com/leonardoxr/dsh-plugin-manager/releases/download/v0.2.0/leonardoxr-dsh-plugin-manager-0.2.0.tgz

Once installation is successful, open the DSH Web interface and navigate to Settings → Plugins → Manage plugins to use it.

Usage

After installing the plugin, you can manage it in the following ways:

  1. Enable/Disable Entries: Toggle the state of an entry on the “Manage plugins” page. Existing entry toggles are persisted to the Web profile patch and take effect immediately.
  2. Remove Overrides: If a plugin entry has been overridden by the current manager, you can remove the override to restore the default value.
  3. Install New Packages: Direct installation from source is supported.
    dsh plugin --profile web add github:leonardoxr/dsh-plugin-manager#v0.2.0
  1. Refresh the Page: After installing new browser packages, you need to refresh the browser page to load the new browser extensions.

Notes and Security

When using this plugin, note the following security and functionality limitations:

  1. Loopback Permission Limitation: authority: loopback limits network reachability, but this is not caller authentication. Local same-user processes, mutable package manager executables, browser content with SSRF capabilities, and profile writers that ignore shared DSH locks remain within the local trust boundary.
  2. Sandbox Isolation: Disabling lifecycle scripts does not sandbox the installed plugin. The plugin runs with the same user permissions as the DSH main process. Only install exact versions provided by reviewed and trusted publishers.
  3. Package Format Limitation: The plugin refuses to install complex or multi-line packages. For such packages, use the official CLI to install and restart DSH Web when convenient.
  4. Timeout Handling: If installation or an operation times out, the managed patch or entry is retained, preventing a running entry from becoming untracked.
  5. Initial State: Because profile extensions are scanned at startup, DSH Web must be restarted after the initial plugin installation.

Summary

dsh-plugin-manager provides DSH users with a visual and secure Web-based management entry point, simplifying the toggling and hot-loading of plugin entries. Before using it, be sure to understand its security model and trust boundary to avoid introducing untrusted code.