Skip to main content

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.

Release files for jhub-apps 2026.9.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jhub-apps 2026.9.1
File Size Uploaded
jhub_apps-2026.9.1.tar.gz 9.6 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for jhub-apps 2026.9.1
File Interpreter ABI Platform
jhub_apps-2026.9.1-py3-none-any.whl Python 3 none any Details

Total release size: 12.8 MB

Release files / jhub_apps-2026.9.1.tar.gz

Download URL jhub_apps-2026.9.1.tar.gz
Size 9.6 MB
Tags Source
SHA-256 checksum
How to use checksums
561bf8d10491f4ca22193933e7aec8f6963fad74ff48d717806d21614b5a2785
BLAKE2b-256 checksum
How to use checksums
17e328c017e93b6fe0dead7ea067e772f936e1928ee459631583df4252c1145c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via Hatch/1.16.5 cpython/3.12.14 HTTPX/0.28.1

Release files / jhub_apps-2026.9.1-py3-none-any.whl

Download URL jhub_apps-2026.9.1-py3-none-any.whl
Size 3.2 MB
Tags Python 3
SHA-256 checksum
How to use checksums
d0124a6158edb4ebeac3914a11269cb8725da324173af88a82eecfe4aa80b262
BLAKE2b-256 checksum
How to use checksums
dec33b4b5878055910d434451e127911145a3e5075968887b19035b7d88f3c38
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via Hatch/1.16.5 cpython/3.12.14 HTTPX/0.28.1

Release history Release notifications | RSS feed

This release

2026.9.1 This release

2 release files

0.2

2 release files

0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page