DeepSeek Harness plugin

dshn

Forward this machine's local DeepSeek Harness (dsh) web service to the public internet over ds.hn: an outbound WSS tunnel to the relay, plus the trust-fence integration that lets forwarded requests

Jump to install

Source facts

Repository
jsdvjx/dshn
Latest update
Aug 21, 2026
Category
Models & Providers
GitHub stars
0
Format
plugin
Package path
packages/agent
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
packages/agent/package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/jsdvjx/dshn/tree/HEAD/packages/agent
Plugin: dshn
Author: jsdvjx

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer2 files
README.mdSource · read only

dshn-agent

The dsh plugin half of [dshn](../../README.md). It opens one outbound WebSocket to the relay, claims a subdomain with the (subdomain, password) the user typed in the setup dialog, and replays whatever the relay forwards against the local dsh web server — HTTP over node:http, dsh's own /api/events.* downlink sockets over a tunnelled ws client.

Two halves:

  • Host (src/index.tslib/index.js): the tunnel client, the replay

engine, the reconnect/heartbeat loop, credential persistence, and the /dshn/status · /dshn/configure · /dshn/disconnect routes.

  • Browser (client.js, hand-authored factory format): a shell.overlay

pill that opens the setup dialog when unconfigured (subdomain + password), or the live status + public URL when connected.

Why no trustedHosts patch

The agent rewrites each forwarded request's Host/Origin to the local loopback authority before replaying it to dsh. dsh's /api browser-trust fence then accepts it as a loopback, same-origin request — for any subdomain, with no composition-time trusted-host entry. That is what lets the subdomain be chosen at runtime in the dialog; access is gated by the relay's login instead of the fence.

Config

Credentials (subdomain + password) are not configured here — the user sets them in the dialog (POST /dshn/configure, loopback-only) and they persist to DSHN_STATE. Only infrastructure is env-configured:

envmeaningdefault
DSHN_RELAY_HOSThost the tunnel dialsrelay.ds.hn
DSHN_ORIGIN_CAPEM cert to pin when dialing a direct grey-cloud origin
DSHN_STATEfile the chosen credentials persist to~/.dshn-agent.json
DSHN_LOCAL_PORTlocal dsh port to replay againstthe web server's port
DSHN_ENABLED0 loads the plugin inert1