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.
Key features¶
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.
Users pick from selectable cards with names, descriptions, and images, instead of a bare list of options.
Let users build an environment image from a Git repository at launch, powered by BinderHub, so each user can define their own images.
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:
Research platforms offering several pre-configured environments
Courses where students launch a specific environment per assignment
Hubs that let users bring or build their own images