We’re excited to present JHub Apps, a new launcher for JupyterHub that supports the deployment and sharing of web applications and dashboards. In this update, we’ll discuss the key problems it solves and the motivation for developing it as a new open source library.
JupyterHub is an open source project for providing multiple users access to JupyterLab & Notebook. With over 7.5 thousand stars on GitHub, it’s used by several data science teams to create collaborative platforms. It can access cloud and high-performance computing (HPC) resources effectively for data science workflows. JupyterHub has an ecosystem of tools that extend and build on its features. One such tool is Nebari.
Nebari is a library that can quickly deploy & manage a JupyterHub-based platform, and has several pre-configured integrations for environment management, user management, and scalability. It allows any data team to quickly set up a collaborative platform without DevOps expertise, and start using it for their everyday work immediately. What started as a small project has grown into an ecosystem of libraries, plugins, extensions, and more working together to create a powerful cloud platform. It’s used by government agencies, climate and energy scientists, pharmaceutical companies, data science educators and many more industry and research teams. We also use it internally at Quansight for several projects. Personally, as a developer advocate, it’s my go-to for testing GPU-specific libraries and workflows that I can’t reliably test on my personal laptop.
We realized this workflow was not intuitive for several Nebari (hence, JupyterHub) users. Data practitioners were not familiar with a “server,” especially when it launched a JupyterLab interface. As the first page, we could use it to share a lot more important information.
The JHub Apps Launcher lists all the available services, and presents the most common features in a Quick Access Panel. In addition to launching a server with JupyterLab, Nebari has a Visual Studio Code-like interface (for the same machine and user file system) provided by Code Server for software development workflows. The software environment management system, provided by conda-store, is central to the platform and is also available in the Quick access panel. You can start a machine with the resources you require, and stop the servers when done. Additional services like User management with Keycloak, Monitoring with Grafana, and Job scheduling with Argo Workflows are available in the sidebar.
The launcher was designed with good user experience (UX) principles to ensure users can quickly find and utilize the resources they need without disrupting their workflows. It’s the very first interface for all Nebari users, so it needs to be the central location for accessing all integrated tools and features of Nebari. The new launcher reinforces Nebari’s core value as a fully bundled, powerful platform for data science and software development.
The JHub Apps Launcher also enables the deployment and sharing of web applications and dashboards, addressing another common challenge in JupyterHub systems. Since JupyterHub is a unified platform for multiple single-user systems, traditional deployment paradigms like running applications on localhost don’t translate directly. Deploying web applications here requires routing through proxies, and sharing this app securely with collaborators on the platform adds complexity.
Previously, CDS Dashboards, a community-built open source library, provided a solution for dashboard sharing in early versions of Nebari. CDS Dashboards eventually slowed into maintenance mode as some opens source projects do, and could not support the latest versions of JupyterHub. We decided to build and maintain an alternative in JHub Apps Launcher, and designed a more intuitive interface from learnings gathered while using CDS Dashboards.
In JHub Apps, users can share applications with collaborators on the same platform, such as specific groups or individuals, and publicly on the internet. This flexibility allows for smoother data science workflows, where deploying and sharing dashboards or small applications is frequent.
A newer JupyterLab extension, jupyterlab-jhub-apps, makes this app and dashboard deployment even more convenient. Instead of returning to the JupyterHub homepage to deploy an app, users can now deploy directly from within the JupyterLab interface they’re working in. With just two or three clicks, it streamlines the workflow further, saving time and reducing overall friction in workflows.
The development of JHub Apps Launcher was funded by the CDAO JATIC initiative, and completed in collaboration with Metrostar.
Although these tools were designed for Nebari, you can use them with any JupyterHub deployment. Check out the project README to get started. If you’d like to deploy Nebari for your data science team, reach out to us!