Preface

The DeepSeek Harness Web UI depends on crypto.randomUUID() when invoking mintRpcId(). Browsers expose this API only in a secure context (HTTPS or loopback). Pure HTTP LAN addresses such as http://192.168.1.66:3080 do not qualify as secure contexts, causing crypto.randomUUID to be undefined. Once it is missing, every single RPC call (such as host.describe or workspace.list) throws TypeError: crypto.randomUUID is not a function, connection generation aborts, the WebSocket handshake is interrupted, and the UI fails to load the session/workspace baseline.

Plugin Identification

dsh-lan-uuid-fix is a DeepSeek Harness plugin package maintained by Zenjibad. It injects a compatibility layer in non-secure contexts so that the Web UI can operate over a pure HTTP LAN.

Core Features

  1. Polyfills crypto.randomUUID in insecure contexts.
  2. Enables the Web UI to run over a pure HTTP LAN.
  3. Registers an index tap on ctx.webServer.
  4. Injects an inline polyfill that defines crypto.randomUUID.

Installation and Enablement

Install using the official command:

dsh plugin --profile web add https://github.com/Zenjibad/dsh-lan-uuid-fix

Note: The Profile patch layer is applied live (HMR), so a running dsh web instance will pick it up automatically without a restart. A hard refresh is required on remote devices.

Typical Usage

Verify that the polyfill was injected successfully:

curl -s http://<host>:3080/ | grep randomUUID   # polyfill present

Applicable Scenarios and Notes

  1. License: MIT License.
  2. Conflict Handling: If a local file path for that line was previously added to the configuration file, remove that line first to avoid duplicate IDs.
  3. Application Mechanism: The Profile patch layer is applied live (HMR); no service restart is required.

The plugin runs under the permissions of the current dsh process. Check the source code and license before installation.

Closing

By resolving the absence of crypto.randomUUID in non-secure contexts, this plugin restores connection stability within a LAN. For more details and the source code, refer to the plugin directory or the GitHub repository.