Description
Proposed change
We use jupyter-server-proxy to give access to applications like tensorboard, mlflow, etc to our users via our JupyterHub deployment. These applications (certainly many more) needs CLI args (for instance logdir
for tensorboard) to be able to work well. This can be tackled by using custom env vars or config files that users need to configure before launching the app. But it would be better if users can set these CLI args directly from the JupyterLab UI before launching the app.
When user clicks the proxy app on the JupyterLab launcher, it shows an input dialog as below
and then user can simply setup CLI args and/or env vars needed to launch that app. We will send these args to the backend, sanitize them and append to the proxy app command.
Another feature is the ability to launch multiple instances of a given app. This can be achieved by adding one more config option, say num_instances
, and then registering the handlers with suffix app_{instance_num}
. This way user can have multiple instances of a given app and it is admins who decide how many instances to allow.
With current implementation of jupyter server proxy, there is no way to terminate the app via UI (user can always send a SIGTERM to process pid "manually"). The idea is to add a manager to the proxied apps that can be managed as kernels, terminals in the JupyterLab sidebar as below
The users can terminate apps here, which will send a SIGTERM signal to the PID that we got from simpervisor.
Who would use this feature?
All the users that use jupyter server proxy to get UI access to the applications running on a platform. This will be very useful particularly for HPC platforms where JupyterHub/JupyterLab is most common way to provide web access on the compute nodes.
(Optional): Suggest a solution
We have already implemented these for our platform and it has running well for almost a year. If the developers of jupyter server proxy are interested, we would be happy to open a PR.