Skip to content

dsh-web

Repo box/github.com/opencharly/pod-dsh:v2026.279.1210

Serves the DeepSeek Harness web Web UI (port 3080) as a supervised service. The web app binds 127.0.0.1:3080 ONLY — dsh-web-app 0.2.0-rc.2 hard-rejects –host 0.0.0.0 (RCE safety) — so a charly-owned entrypoint runs dsh web in the background and exec’s a socat forwarder that listens on the container’s eth0 (0.0.0.0:3081) and forwards to loopback. socat cannot share port 3080 (Linux forbids a wildcard + loopback pair on one port), so the published port (auto-allocated host port -> container 3081) reaches the web UI on the pod substrate. The web UI authenticates every request: each process mints a random launch token and dsh web prints it in its dsh web: http://127.0.0.1:3080/?token=... readiness line. The entrypoint captures that token and persists it to $DSH_HOME/web-token (on the dsh volume, so it survives the fresh charly update rebuild), and the in-box checks authenticate with curl "http://127.0.0.1:3080/?token=$(cat $DSH_HOME/web-token)". Every fact is observable: the running service, the persisted token file, and the HTTP 200 the token-authenticated web UI answers on 127.0.0.1:3080.

Installed on every distro:

  • socat
  • dsh

This candy’s plan: — the runnable spec charly check executes against a live deployment. check: steps are idempotent probes; run: steps change state.

Intent Step
run mkdir=${HOME}/.local/bin
run copy=dsh-entrypoint
check the dsh service is running under the init system
check the token-authenticated dsh web UI answers on 127.0.0.1:3080 in-box
check the socat forwarder relays the token-authenticated dsh web UI on 127.0.0.1:3081 in-box
check the published port reaches the dsh web UI and enforces its auth fence (401 without a token)