These are the initiatives that currently drive 2i2c’s work. They mostly involve making upstream contributions in open source communities. See About the roadmap for what these mean.
🚀 In-Flight Initiatives¶
These are driving our work right now...
Allow limiting access to dask-gateway based on group membership1/4Fund this
As a JupyterHub admin, I want to control how much cloud spend my hub uses. One of the important components is how much resources people can use at a time. While JupyterHub lets me control that by restricting resource allocations to different groups, dask-gateway does not. So a user can intentionally or accidentally spin up a huge dask-gateway cluster and use all the cloud spend I have budgeted for a month in a few hours. As a first step measure to protect from this, I want to control who can access dask-gateway in my hub, so I can grant access only to people who have been vetted.
Sub-issues
🟣 Help release a new dask-gateway versionUpdated 20d ago
🟢 Rollout the new dask-gateway versionUpdated 25d ago
🟢 Restrict dask-gateway accessUpdated 25d ago
🟢 Upgrade the dask-gateway version everywhereUpdated 25d ago
Implement a way to quota users based on their compute usage over time1/6Fund this
As a JupyterHub admin who supports a broad swath of different kinds of users, I want ways to control costs by controlling how much resources (RAM, CPU) each user can use. I want to be able to make this determination based on the groups the user is in, and have user friendly ways of having the users know how much they can use, and how much they have used.
Sub-issues
🟢 Compute usage quotas: (Phase 1) Setup a prometheus specifically for quota system useUpdated 2mo ago
🟣 Compute usage quotas: (Phase 2) Build a python library to make quota decisionsUpdated 7d ago
🟢 Compute usage quotas: (Phase 3) Integrate quota decision library into JupyterHub spawning processUpdated 2mo ago
🟢 Compute usage quotas: (Phase 4) JupyterHub service for users to check their own home storage and compute quotaUpdated 2mo ago
🟢 Compute usage quotas: (Phase 5) Improve the 'Spawn Progress' page on JupyterHub for compute usage quotasUpdated 2mo ago
🟢 Compute usage quotas: (Phase 6) Roll out Compute Usage QuotasUpdated 2mo ago
Support canvas authentication10/20Fund this
As an IT department at a large university, I would like to use Canvas as our single source of truth for all sorts of user management information (such as class enrollment, active status, etc). Since our JupyterHub is exclusively provided for student use, I would like to use Canvas as the source of authentication and authorization information for our JupyterHub. I would like to pull in group information based on class enrollment and similar information, so I can get insight into various features provided by JupyterHub based on group membership (access control, cost usage, usage monitoring, etc)
Sub-issues
🟣 Initial set up for Canvas authentication projectUpdated 1mo ago
🟣 : UToronto check-in work and tracking issueUpdated 1mo ago
🟣 Acquire Canvas credentials from UTorontoUpdated 1mo ago
🟣 Enable canvas authentication on the UToronto staging hubsUpdated 26d ago
🟣 Document Canvas authentication in infrastructure docsUpdated 6d ago
🟣 Plan migration of user data on UTorontoUpdated 26d ago
🟣 Angus needs to show demo for Canvas authUpdated today
🟢 Create plan for Canvas migration switchoverUpdated 6d ago
🟢 Perform home directory migration for UTorontoUpdated 5d ago
🟢 Enable canvas authentication on the UToronto prod hubUpdated 5d ago
🟢 Enable canvas authentication on the UToronto r hubUpdated 1mo ago
🟢 Enable canvas authentication on the UToronto highmem hubUpdated 1mo ago
🟢 Anticipate and respond to UToronto issues following Canvas migrationUpdated 1mo ago
🟣 Build `jupyterhub_oauthenticator_authz_helpers`Updated 7d ago
🟣 Test `jupyterhub_oauthenticator_authz_helpers` on UToronto staging hubUpdated 6d ago
🟣 Extend `jupyterhub_oauthenticator_authz_helpers` to include a non-Canvas helperUpdated 6d ago
🟢 Receive review from tech-lead on oauth helpersUpdated 5d ago
🟢 Write blog post about `jupyterhub_oauthenticator_authz_helpers`Updated 21d ago
🟢 Deploy `jupyterhub_oauthenticator_authz_helpers` to a UToronto production hub(s)Updated 21d ago
🟢 Upstream governance of `jupyterhub-contrib`Updated 21d ago
Allow verifying continual executability of notebook content on binder with CI/CD5/6Fund this
As an educator in the scientific python space, I want to write and publish notebooks that demonstrate how to perform various tasks for people in my community. However, the ecosystem moves fast and it is critical that these notebooks continue to function with these changes, rather than only at time of writing. I would like to use a CI/CD system to make sure these work fine in the long term. Since we use GitHub for content authoring, I could use GitHub actions for verifying some of these. However, since we run things on binder, we would like to be able to automatically use and verify that things work on Binder.
Sub-issues
🟣 Implement technical work for BinderBot for Project PythiaUpdated 2mo ago
🟣 Perform initial technical migration work for BinderBot for Project PythiaUpdated 2mo ago
🟣 Support community migration work for BinderBot for Project PythiaUpdated 2mo ago
🟣 Migrate 5 cookbooks for Project PythiaUpdated 1mo ago
🟣 Meet with Project Pythia to discuss cookbook-actionsUpdated 19d ago
🟢 Update cookbook-actions workflows with outcomes of Pythia meetingUpdated 19d ago
Support providing cost effective % of GPUs for students on a hub (on GCP)1/2Fund this
As an instructor, I want to teach content that requires use of a not very powerful GPU some of the time. It’s integrated into my teaching syllabus, where there is a lot of CPU bound work and some GPU bound work. While I could bounce to a different tool that offers just GPUs (like Google Colab) that has its own set of compliance, pedagogy and UX problems that detract from my teaching and I don’t want my students to go through that.
As a student, I want to do all my course content in one familiar hub where I have access to similar tools and my home directory is the same over time for any particular course, without bouncing between different tools. I also don’t want to have to understand the differences between various GPUs, etc before I do my work, as I’m just doing light GPU work to understand fundamentals.
As a hub admin, I want to support my instructors using GPUs but without blowing through my budget entirely. I also want to give them any GPU access at all, in the face of limited GPU availability on many cloud providers today (in 2026)
Sub-issues
🟣 Enable GPU timeslicing on GCPUpdated 1mo ago
🟢 Write a blog post about GPU timeslicing once we have a community that uses itUpdated 19d ago
Check out Candidate Initiatives » for a list of initiatives for which we’re seeking endorsement or co-funding.
📋 Upcoming Initiatives¶
We’ll work on these next as we finish up In-Flight initiatives...
Support running hubs on an NRP allocation0/0Fund this
As a JupyterHub admin, I want to leverage all possible kinds cloud resources available to me to serve my users, rather than just commercial cloud providers (like AWS, GCP, etc). I’ve limited budget that goes towards everything I do, and being able to reduce the cloud spend $$$ lets me put that money towards other things that add value. Due to my affiliation, I have access to an allocation of resources on the National Research Platform. I want something a little more customized than NRP’s hosted jupyterhub, and I don’t have the skillset (or time) to deploy my own JupyterHub there. I would like to be able to use NRP’s resources (particularly GPUs) to serve my users.
Move to Helm v4 for our infrastructure0/4Fund this
We use helm to deploy the JupyterHub chart z2jh. The helm project released v4 in September of 2025. We need to structurally keep up with these releases in time, so we don’t have to scramble when the older version gets end-of-life. We currently don’t know if zero to jupyterhub works with helm v4, so we can not ‘simply’ upgrade.
Sub-issues
🟢 Support installing helm v4 in https://github.com/jupyterhub/action-k3s-helmUpdated 2mo ago
🟢 Contribute to zero to jupyterhub to make sure it works on helm v3 and helm v4Updated 2mo ago
🟢 Roll out helm v4 in our infrastructureUpdated 1mo ago
🟢 Write a blog post about our helm v4 migrationUpdated 2mo ago
Allow end users to view their storage usage0/0Fund this
As an end user, I have a maximum amount of home directory storage I can use on a hub. However, there is no easy way for me to know how much I have used, so I bump into storage quota limitations as a surprise.
Support providing cost effective % of GPUs for students on a hub (on AWS)0/1Fund this
As an instructor, I want to teach content that requires use of a not very powerful GPU some of the time. It’s integrated into my teaching syllabus, where there is a lot of CPU bound work and some GPU bound work. While I could bounce to a different tool that offers just GPUs (like Google Colab) that has its own set of compliance, pedagogy and UX problems that detract from my teaching and I don’t want my students to go through that.
As a student, I want to do all my course content in one familiar hub where I have access to similar tools and my home directory is the same over time for any particular course, without bouncing between different tools. I also don’t want to have to understand the differences between various GPUs, etc before I do my work, as I’m just doing light GPU work to understand fundamentals.
As a hub admin, I want to support my instructors using GPUs but without blowing through my budget entirely. I also want to give them any GPU access at all, in the face of limited GPU availability on many cloud providers today (in 2026)
As a 2i2c engineer, I want to support the same features across all cloud providers, so my support load is less.
Sub-issues
🟢 Enable GPU timeslicing on AWSUpdated 1mo ago
Improve monitoring of GPU usage by users0/0Fund this
As a JupyterHub admin, I want to provide GPU access to my users, but want to know if they are using it efficiently. GPUs are expensive, and we pay for them when we provision them, regardless of how much they are used. So I want to be able to tell if users are heavily underutilizing them, so I can talk to them to provide more educational resources or investigate if their needs are met by CPU-only tooling already. I also want to tell if someone is maxing out their GPU, so I can offer them bigger resources if needed. This reporting also helps me justify my cloud spend budget, as I can point to end users utilizing the resources I provide.
Allow creating links to specific hub server options0/0Fund this
As a user on the hub, I want to have someone else get into the exact same kind of server I am on (environment, resource allocation, content pulled, etc) so we can work together with less accidental complexity caused by underlying server differences. Currently to do so, I have to explicitly give them verbal instructions on what options to choose or type in their ‘Start Server’ page (‘Select the JupyterLab instance, and pick the 14.1 GB resource allocation, then click start’), which is error prone. It is particularly error prone when those instructions use features such as ‘Unlisted choice’ (‘Select Other..., and type in this exact image, and avoid spaces’) or ‘Build your own image’. I want an easier and more succint way to share this that doesn’t involve verbal instructions.
Support running fixed cost hubs on Hetzner / OVH0/1Fund this
As an instructor in a smaller or under-resourced college or university, I want to use JupyterHub to provide interactive instructional help for my students. However, we have a limited and fixed budget, and I must know beforehand how much it is going to cost each month. I am told that commercial cloud providers with autoscaling will have cloud spend ‘based on usage’, and the estimates I am given are beyond my current reach. My class sizes are reasonably small, and I would love to have a fixed cost pathway towards running a hub. This should also help me prove to my institution that this is a valuable service that we should pay for as an organization.
Sub-issues
🟢 Add support for running a single node cluster on OVHUpdated 3mo ago
Support running GPUs on Jetstream20/0Fund this
As a hub admin, I want to provide GPU access for my instructors & students so they can experiment with modern code that requires GPU. However, GPUs in commercial cloud are expensive and I want to balance how much $$$ I spend on the cloud. Due to my institutional affiliation, I have access to credits on Jetstream2, and I would like to run a hub with GPU access there.
Provide opinionated guidance on how communities can structure groups from their authenticator0/0Fund this
As a JupyterHub admin, I want to put users in different kinds of ‘groups’ for different purposes:
For access to the hub
For cost monitoring and reporting
For access to different size of resources (more RAM, GPUs, etc)
For admin access (to other users’ servers and home directories and shared directories)
For potential collaboration
All these are groups under different ‘axes’, and I don’t know how to structure groups from my authenticator to support these use cases. There are many different ways to do this, and I don’t have any guidance or expertise to figure out what the options are, and how to choose them.
Support real time collaboration between users on JupyterLab0/0Fund this
As a researcher, I want to be collaborate with another user (or users) on my hub by temporarily granting them real time access to the notebook I’m working on in a secure way.
As a student, I want to temporarily grant real time access to my notebook to a TA so they can help me with some conceptual or coding problems I am having.
Check out Candidate Initiatives » for a list of initiatives for which we’re seeking endorsement or co-funding.