Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

JupyterHub Fancy Profiles

A more flexible and powerful profile selector for JupyterHub

When you offer users a choice of server environments, KubeSpawner shows a plain list of options with minimal functionality. Fancy Profiles renders the same configuration as a card-based interface, with additional functionality for descriptions, on-demand image building, and shareable launch links.

It’s a drop-in replacement, and requires no changes to your KubeSpawner profileList configuration. Enable it like so:

from jupyterhub_fancy_profiles import setup_ui

setup_ui(c)

And your users will see something like the following when they next log-in:

The Fancy Profiles selector, rendered from a standard KubeSpawner profileList.

The Fancy Profiles selector, rendered from a standard KubeSpawner profileList.

Install User guide

Key features

⚙️ Drop-in, no config changes

Works with your existing KubeSpawner profileList. Add two lines of config and your profiles render in the new UI. There’s no migration step, and it’s easy to revert.

✅ Enhanced profile selection

Users pick from selectable cards with names, descriptions, and images, instead of a bare list of options.

⚗️ Dynamic image building

Let users build an environment image from a Git repository at launch, powered by BinderHub, so each user can define their own images.

🔗 Permalinks & auto-start

Share a URL that pre-selects (or auto-launches) a configured environment. This works well for workshops, courses, and shared team setups.

Who is this for?

Fancy Profiles is for JupyterHub administrators running on Kubernetes (KubeSpawner) who let users choose between multiple server environments, resource sizes, or images at launch.

It’s a good fit if you run:

Compatibility


Acknowledgments

Funded in part by GESIS in cooperation with NFDI4DS 460234259 and CESSDA.