What Are Jupyter Server Extensions and What Applications Are Built on Jupyter Server?

Updated

Jupyter Server extensions are components that use the framework and services provided by Jupyter Server to create applications and services. According to the Jupyter Server documentation, examples include JupyterLab, Jupyter Resource Usage, Jupyter Scheduler, jupyter-collaboration, NbClassic, and Cylc UI Server. If you want to understand how the Jupyter ecosystem reuses one backend across different front ends, these extensions are the clearest illustration.

What Jupyter Server provides to extensions

Jupyter Server is the backend that provides the core services, APIs, and REST endpoints for Jupyter web applications. It is a replacement for the Tornado Web Server in Jupyter Notebook, and Jupyter web applications are expected to move to using Jupyter Server. The documentation points to a "Migrating from Notebook Server" page for help with that transition.

That backend role is what makes extensions possible: instead of each application rebuilding core services, an extension can build on the framework and services Jupyter Server already exposes.

Documented examples of Jupyter Server extensions

The documentation lists these extensions directly:

Extension What it is, per the documentation
JupyterLab The JupyterLab computational environment
Jupyter Resource Usage A Jupyter Notebook extension for monitoring your own resource usage
Jupyter Scheduler Runs Jupyter notebooks as jobs
jupyter-collaboration A Jupyter Server extension providing support for Y documents
NbClassic Jupyter notebook as a Jupyter Server extension
Cylc UI Server A Jupyter Server extension that serves the cylc-ui web application for monitoring and controlling Cylc workflows

Two patterns are worth noticing. Some entries are full applications in their own right (JupyterLab, NbClassic), while others add a specific capability on top of the server (resource monitoring, job scheduling, collaborative documents, workflow control). That range is the point: the same server foundation supports both.

Where to go for extension details

The documentation directs readers to the Server Extensions page for more information on extensions. That is the natural next stop if you are deciding whether to write an extension or need to know what the extension interface covers.

Who this documentation is written for

Jupyter Server is described as a highly technical piece of the Jupyter Stack, so the documentation is split by persona:

  • Users — people using Jupyter web applications
  • Operators — people deploying or serving Jupyter web applications to others
  • Developers — people writing Jupyter Server extensions and web applications
  • Contributors — people contributing directly to the Jupyter Server library

If you are evaluating extensions as a developer, the Developers track (architecture diagrams, depending on Jupyter Server, the REST API, server extensions, file save hooks, contents API, WebSocket kernel wire protocols, and API docs) is the relevant section. If you are deploying them, the Operators track covers managing multiple extensions, configuring extensions, migrating from Notebook Server, running a public server, security, and logging configuration.

The documentation also notes that gaps can be reported by opening an issue, or preferably a pull request, on the Jupyter Server GitHub repository.