Skip to main content

JupyterHub Apps

Project description

JupyterHub Apps Launcher

Lint Test

JupyterHub Apps Launcher is a generalized server launcher. The goal of this project is to support launching anything like say a Flask Server, FastAPI server or a Panel Dashboard via a user supplied command. Currently, the following frameworks are supported:

  • Panel
  • Bokeh
  • Streamlit
  • Plotly Dash
  • Voila
  • Gradio
  • JupyterLab
  • Generic Python Command

JHub Apps Demo

Installation

uv pip install jhub-apps

or via conda

conda install -c conda-forge jhub-apps

Development Installation

Install Dependencies

uv sync --extra dev

To develop the React UI frontend, also run:

cd ui
npm install
cd -

K3d Development Environment

For testing JupyterHub Apps with Kubernetes spawners (e.g., KubeSpawner), you can use the k3d development environment which provides a local Kubernetes cluster with Tilt for rapid development.

Prerequisites:

cd k3s-dev
make up

Once started, access JupyterHub at http://localhost:8000 (login with any username and password password)

To tear down the environment:

make down

Starting JupyterHub

Set the following environment variable:

export JHUB_APP_JWT_SECRET_KEY=$(openssl rand -hex 32)

Start JupyterHub:

jupyterhub -f jupyterhub_config.py

Now go to http://127.0.0.1:8000/hub/home to access JHub Apps Launcher

API Endpoints

The Hub service is exposed via FastAPI endpoints. The documentation for the same can be accessed at: http://127.0.0.1:10202/services/japps/docs

To try out authenticated endpoints click on the Authorize button on the top right of the above url and choose OAuth2AuthorizationCodeBearer and click on Authorize.

Developing Locally

Note: In order to develop locally, both the JupyterHub backend and React UI frontend should be running.

  1. To start the JupyterHub Backend, run the following in a terminal:
jupyterhub -f jupyterhub_config.py
  1. To start the React UI frontend, run the following in a separate terminal from the ui directory:
npm run watch

Running Tests

Unit Tests

pytest jhub_apps/tests

E2E Tests

pytest jhub_apps/tests/tests_e2e -vvv -s --headed

Usage

JHub Apps has been tested with local JupyterHub using SimpleLocalProcessSpawner and with The Littlest JupyterHub using SystemdSpawner.

  • Install JHub Apps
uv pip install git+https://github.com/nebari-dev/jhub-apps.git
  • Add the following in The Littlest JupyterHub's jupyterhub_config.py
from tljh.user_creating_spawner import UserCreatingSpawner
from jhub_apps.configuration import install_jhub_apps

c.JupyterHub.bind_url = "<YOUR_JUPYTERHUB_URL>"
c.SystemdSpawner.unit_name_template = 'jupyter-{USERNAME}{JHUBSERVERNAME}'
c.JAppsConfig.apps_auth_type = "oauth" # or none (if you don't want authentication on apps)
c.JAppsConfig.python_exec = "python3"
# Pass in the path to jupyterhub config
c.JAppsConfig.jupyterhub_config_path = "jupyterhub_config.py"
# Either a static list of conda environments to show in the
# create panel apps form or a callable to fetch conda enviornments
# dynamically, e.g. from conda-store API
c.JAppsConfig.conda_envs = []
c = install_jhub_apps(c, UserCreatingSpawner)

Acknowledgments

This project is heavily inspired by and uses code from @danlester's cdsdashboards, without his work building this would have been a whole lot harder.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jhub_apps-2026.5.1rc1.tar.gz (13.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jhub_apps-2026.5.1rc1-py3-none-any.whl (3.3 MB view details)

Uploaded Python 3

File details

Details for the file jhub_apps-2026.5.1rc1.tar.gz.

File metadata

  • Download URL: jhub_apps-2026.5.1rc1.tar.gz
  • Upload date:
  • Size: 13.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Hatch/1.16.5 cpython/3.12.13 HTTPX/0.28.1

File hashes

Hashes for jhub_apps-2026.5.1rc1.tar.gz
Algorithm Hash digest
SHA256 d977b2c6109e925d76cc762a3fd6c0c5b1874065aecf32c07b424e754235d714
MD5 295d6b7016d2959a3f8f7c15c827ee33
BLAKE2b-256 77abe1d0babd4a3701f3c38d8fad076b396b0154775d3c62e9abe2ef33717142

See more details on using hashes here.

File details

Details for the file jhub_apps-2026.5.1rc1-py3-none-any.whl.

File metadata

  • Download URL: jhub_apps-2026.5.1rc1-py3-none-any.whl
  • Upload date:
  • Size: 3.3 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Hatch/1.16.5 cpython/3.12.13 HTTPX/0.28.1

File hashes

Hashes for jhub_apps-2026.5.1rc1-py3-none-any.whl
Algorithm Hash digest
SHA256 23a867093fa0f707b5e8e8b9ef86532272972c7beb29d6e437a58125eaebbf48
MD5 1d0450b3c8cdf5771f534a6f96d44e81
BLAKE2b-256 d68a261e724abbc35578ea4f6b4997a74fac071f4e71d90bd1604f4727fe79b4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page