jupyter-dsh-proxy
A jupyter-server-proxy launcher entry for the DeepSeek Harness (dsh) web UI.
It adds a "DeepSeek Harness" tile to the JupyterLab launcher that opens the dsh web UI in a new tab — without requiring code-server / VS Code to be running first.
How it works
The dsh web server is started independently at pod boot by the
41-dsh-web boot hook (in the divenb image), which runs dsh web on a fixed
loopback port. This package registers a PORT-mode proxy spec that points at
that already-running server:
browser → jupyter-server-proxy (/dsh/) → dsh web (127.0.0.1:<port>)
The spec uses {"port": <P>, ...} — not url mode. jupyter-server-proxy
4.x's ServerProcess has no url traitlet; a url-only spec registers no
proxy handler and the tile 404s. Port mode registers a real _Proxy handler at
the tile's link path (/…/dsh/). request_headers_override pins the Host
header to the loopback bind (mirrors jupyter-hermes-proxy).
The same dsh web instance is shared with the VS Code extension: the
extension only auto-starts dsh web when nothing is already listening at its
dsh.url, so a boot-hook-owned instance is used by both entry points.
Port selection
The launcher resolves the target port in this order:
~/.dsh/web.port— written by the41-dsh-webboot hook (single source of truth for a non-default port).DSH_WEB_PORTenv var — a literal number, orrandom/auto/0to pick a free port (used only ifweb.portis absent).- default 3080 — the dsh web default and the VS Code extension default, so both entry points agree with no configuration.
The port is a documented dsh web flag (dsh web --port <P>), not a patched
default, so it survives dsh version bumps.
Installation
uv pip install /path/to/jupyter-dsh-proxy
The dsh entry point is auto-discovered by jupyter-server-proxy; no additional
configuration is required. The launcher tile appears under the "Other"
section.
Metadata
Release files for jupyter-dsh-proxy 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| jupyter_dsh_proxy-0.2.0.tar.gz | 31.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| jupyter_dsh_proxy-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 61.3 kB
Release files / jupyter_dsh_proxy-0.2.0.tar.gz
| Download URL | jupyter_dsh_proxy-0.2.0.tar.gz |
|---|---|
| Size | 31.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3634ab21df1464cc3bc99837be829cb311e5644729b32b0816c372c297ef869f
|
|
BLAKE2b-256 checksum How to use checksums |
2591d5d831cb8b6a544ac53f983024db6ce23287808d8753fe88c9564671043a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.5
|
Release files / jupyter_dsh_proxy-0.2.0-py3-none-any.whl
| Download URL | jupyter_dsh_proxy-0.2.0-py3-none-any.whl |
|---|---|
| Size | 29.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a690ebc97f92581a1ea9b60a8c74e09126a7e5e30c8425f19b33070fc53491c3
|
|
BLAKE2b-256 checksum How to use checksums |
38f515a7c51d37e31179e17729bad2f42fe95c644dc8922ecb675bb8a089e1d6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.5
|