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.