jupyter-deploy-client-proxy
A local client that routes an app from your http://localhost to a
jupyter-deploy-managed remote host. It runs a configured token command
(the exec-credential contract, à la kubectl ExecCredential / aws eks get-token),
receives a JSON connection bundle on stdout, and proxies plain http://localhost
to the remote host over pinned self-signed TLS — injecting the bundle's rotating
headers on every request and the WebSocket upgrade.
It stays cloud-agnostic — it imports nothing cloud-specific and works against any self-signed-TLS + bearer endpoint:
jupyter-deploy-client-proxy --token-command "jd proxy connect-info" --listen-port 8080
Connection bundle
The token command emits, on stdout:
{
"host": "203.0.113.7", "port": 443,
"ca_cert": "-----BEGIN CERTIFICATE-----\n...",
"headers": { "Authorization": "Bearer ...", "x-k8s-aws-id": "..." },
"expires_at": "2026-06-10T18:01:00Z"
}
The proxy re-execs the command on a margin before expires_at, reconnecting with
the fresh endpoint/pin/credential and keeping localhost:PORT stable.
A token command signals a transient failure (network blip, throttling) by exiting
75 (EX_TEMPFAIL): the proxy keeps serving on its last-good credential and retries.
Any other non-zero exit is permanent — the proxy can no longer serve anything, so it
stops itself and exits 78.
Auto-shutdown
The proxy ends its own process in two cases, so a background one cannot outlive its session:
- the credential can no longer be refreshed (the token command failed permanently)
— exits
78, leavingstatus.jsonbehind as the record that it failed rather than stopped; the reason is in theNNNN.logfiles beside it; - no client activity for
--idle-timeout-seconds(default 7200, two hours) — exits0and removesstatus.json, like any clean stop. Pass0to disable, which is whatjd opendoes when it runs the proxy in the foreground: there the terminal governs the lifetime.
Activity means traffic from a client. An open WebSocket counts even while no frames flow, so a kernel computing silently for hours keeps its tunnel, and a response still streaming counts on every chunk, so a long transfer is never cut off mid-flight. Credential refreshes do not count — they are the proxy's own traffic.
Part of the jupyter-deploy project.
License
The jupyter-deploy-client-proxy package is licensed under the MIT License.
Metadata
Release files for jupyter-deploy-client-proxy 0.1.1
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_deploy_client_proxy-0.1.1.tar.gz | 51.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| jupyter_deploy_client_proxy-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 85.5 kB
Release files / jupyter_deploy_client_proxy-0.1.1.tar.gz
| Download URL | jupyter_deploy_client_proxy-0.1.1.tar.gz |
|---|---|
| Size | 51.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5ff29a29654b612cfc7589d435282242ecebcca5a1ba8613b6709ad00b8abba3
|
|
BLAKE2b-256 checksum How to use checksums |
a14648fb1b43c81910fbd701bf23f58817926252d7f43071b52effa07bb1c6e8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.20 {"installer":{"name":"uv","version":"0.12.20","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / jupyter_deploy_client_proxy-0.1.1-py3-none-any.whl
| Download URL | jupyter_deploy_client_proxy-0.1.1-py3-none-any.whl |
|---|---|
| Size | 34.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f6886eb0f075c00948e9f4d6a12ae8c9b507f1d3904d4c3958ba3b984f78ccc5
|
|
BLAKE2b-256 checksum How to use checksums |
f5f061cf6e0e05b3c4fb4723c16af2952066b2f74be163c034b757bcb8c84c9b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.20 {"installer":{"name":"uv","version":"0.12.20","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|