# jupyter-server

> The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications.

- **URL**: https://www.freshcrate.ai/projects/jupyter-server
- **Author**: pypi
- **Category**: Frameworks
- **Latest version**: `v2.19.0` (2026-05-29)
- **License**: non-standard
- **Source**: https://github.com/jupyter-server/jupyter_server
- **Homepage**: https://pypi.org/project/jupyter-server/
- **Language**: Python
- **GitHub**: 557 stars, 393 forks
- **Registry**: pypi (`jupyter-server`)
- **Tags**: `ipython`, `jupyter`, `pypi`

## Description

# Jupyter Server

[![Build Status](https://github.com/jupyter-server/jupyter_server/actions/workflows/python-tests.yml/badge.svg?query=branch%3Amain++)](https://github.com/jupyter-server/jupyter_server/actions/workflows/python-tests.yml/badge.svg?query=branch%3Amain++)
[![Documentation Status](https://readthedocs.org/projects/jupyter-server/badge/?version=latest)](http://jupyter-server.readthedocs.io/en/latest/?badge=latest)

The Jupyter Server provides the backend (i.e. the core services, APIs, and REST endpoints) for Jupyter web applications like Jupyter notebook, JupyterLab, and Voila.

For more information, read our [documentation here](http://jupyter-server.readthedocs.io/en/latest/?badge=latest).

## Installation and Basic usage

To install the latest release locally, make sure you have
[pip installed](https://pip.readthedocs.io/en/stable/installing/) and run:

```
pip install jupyter_server
```

Jupyter Server currently supports Python>=3.6 on Linux, OSX and Windows.

### Versioning and Branches

If Jupyter Server is a dependency of your project/application, it is important that you pin it to a version that works for your application. Currently, Jupyter Server only has minor and patch versions. Different minor versions likely include API-changes while patch versions do not change API.

When a new minor version is released on PyPI, a branch for that version will be created in this repository, and the version of the main branch will be bumped to the next minor version number. That way, the main branch always reflects the latest un-released version.

To see the changes between releases, checkout the [CHANGELOG](https://github.com/jupyter/jupyter_server/blob/main/CHANGELOG.md).

## Usage - Running Jupyter Server

### Running in a local installation

Launch with:

```
jupyter server
```

### Testing

See [CONTRIBUTING](https://github.com/jupyter-server/jupyter_server/blob/main/CONTRIBUTING.rst#running-tests).

## Contributing

If you are interested in contributing to the project, see [`CONTRIBUTING.rst`](CONTRIBUTING.rst).

## Team Meetings and Roadmap

- When: Thursdays [8:00am, Pacific time](https://www.thetimezoneconverter.com/?t=8%3A00%20am&tz=San%20Francisco&)
- Where: [Jovyan Zoom](https://zoom.us/j/95228013874?pwd=Ep7HIk8t9JP6VToxt1Wj4P7K5PshC0.1)
- What:
  - [Meeting notes](https://github.com/jupyter-server/team-compass/issues?q=is%3Aissue%20%20Meeting%20Notes%20)
  - [Agenda](https://hackmd.io/Wmz_wjrLRHuUbgWphjwRWw)

See our tentative [roadmap here](https://github.com/jupyter/jupyter_server/issues/127).

## About the Jupyter Development Team

The Jupyter Development Team is the set of all contributors to the Jupyter project.
This includes all of the Jupyter subprojects.

The core team that coordinates development on GitHub can be found here:
https://github.com/jupyter/.

## Our Copyright Policy

Jupyter uses a shared copyright model. Each contributor maintains copyright
over their contributions to Jupyter. But, it is important to note that these
contributions are typically only changes to the repositories. Thus, the Jupyter
source code, in its entirety is not the copyright of any single person or
institution. Instead, it is the collective copyright of the entire Jupyter
Development Team. If individual contributors want to maintain a record of what
changes/contributions they have specific copyright on, they should indicate
their copyright in the commit message of the change, when they commit the
change to one of the Jupyter repositories.

With this in mind, the following banner should be used in any source code file
to indicate the copyright and license terms:

```
# Copyright (c) Jupyter Development Team.
# Distributed under the terms of the Modified BSD License.
```

## Recent releases

| Version | Date | Urgency | Changes |
| --- | --- | --- | --- |
| `v2.19.0` | 2026-05-29 | High | ## 2.19.0  ([Full Changelog](https://github.com/jupyter-server/jupyter_server/compare/v2.18.2...664e2255c71efe963f397b9f803dbcf503b5a920))  ### Enhancements made  - Return `unresolved` stanza when kernel scope is unavailable for `resolvePath` (instead of failing with 404) [#1641](https://github.com/jupyter-server/jupyter_server/pull/1641) ([@MUFFANUJ](https://github.com/MUFFANUJ), [@Carreau](https://github.com/Carreau), [@krassowski](https://github.com/krassowski))  ### Bugs fixed  - Recreate |
| `v2.18.2` | 2026-05-06 | High | ## 2.18.2  ([Full Changelog](https://github.com/jupyter-server/jupyter_server/compare/v2.18.1...0d829f2c35a481c3b24ecbe1e25a6f79954e88f2))  ### Bugs fixed  - Fix saving user avatar URL [#1637](https://github.com/jupyter-server/jupyter_server/pull/1637) ([@brichet](https://github.com/brichet), [@krassowski](https://github.com/krassowski)) - Fix path resolution if `root_dir` is a filesystem root [#1636](https://github.com/jupyter-server/jupyter_server/pull/1636) ([@Yann-P](https://github.com/Yan |
| `v2.18.0` | 2026-05-04 | High | ## 2.18.0  ([Full Changelog](https://github.com/jupyter-server/jupyter_server/compare/v2.17.0...49b34392feaa97735b3b777e3baf8f22f2a14ed8))  ### API and Breaking Changes  - Add query param to sanitize HTML in GET /nbconvert/html [#1618](https://github.com/jupyter-server/jupyter_server/pull/1618) ([@Yann-P](https://github.com/Yann-P), [@Carreau](https://github.com/Carreau))  ### Enhancements made  - Update handlers.py to fix ioloop  blockers(sync file operations) [#1617](https://github.c |
| `2.17.0` | 2026-04-21 | Low | Imported from PyPI (2.17.0) |
| `v2.17.0` | 2025-08-21 | Low | ## 2.17.0  ([Full Changelog](https://github.com/jupyter-server/jupyter_server/compare/v2.16.0...4484f122a70014c864b44fd0d8f50f660dae1538))  ### Enhancements made  - Avoid redundant call to `_get_os_path` in `_dir_model` [#1547](https://github.com/jupyter-server/jupyter_server/pull/1547) ([@joeyutong](https://github.com/joeyutong)) - Allow specifying extra params to scrub from logs [#1538](https://github.com/jupyter-server/jupyter_server/pull/1538) ([@jtpio](https://github.com/jtpio)) - Add a l |
| `v2.17.0` | 2025-08-21 | Low | ## 2.17.0  ([Full Changelog](https://github.com/jupyter-server/jupyter_server/compare/v2.16.0...4484f122a70014c864b44fd0d8f50f660dae1538))  ### Enhancements made  - Avoid redundant call to `_get_os_path` in `_dir_model` [#1547](https://github.com/jupyter-server/jupyter_server/pull/1547) ([@joeyutong](https://github.com/joeyutong)) - Allow specifying extra params to scrub from logs [#1538](https://github.com/jupyter-server/jupyter_server/pull/1538) ([@jtpio](https://github.com/jtpio)) - Add a l |
| `v2.17.0` | 2025-08-21 | Low | ## 2.17.0  ([Full Changelog](https://github.com/jupyter-server/jupyter_server/compare/v2.16.0...4484f122a70014c864b44fd0d8f50f660dae1538))  ### Enhancements made  - Avoid redundant call to `_get_os_path` in `_dir_model` [#1547](https://github.com/jupyter-server/jupyter_server/pull/1547) ([@joeyutong](https://github.com/joeyutong)) - Allow specifying extra params to scrub from logs [#1538](https://github.com/jupyter-server/jupyter_server/pull/1538) ([@jtpio](https://github.com/jtpio)) - Add a l |
| `v2.17.0` | 2025-08-21 | Low | ## 2.17.0  ([Full Changelog](https://github.com/jupyter-server/jupyter_server/compare/v2.16.0...4484f122a70014c864b44fd0d8f50f660dae1538))  ### Enhancements made  - Avoid redundant call to `_get_os_path` in `_dir_model` [#1547](https://github.com/jupyter-server/jupyter_server/pull/1547) ([@joeyutong](https://github.com/joeyutong)) - Allow specifying extra params to scrub from logs [#1538](https://github.com/jupyter-server/jupyter_server/pull/1538) ([@jtpio](https://github.com/jtpio)) - Add a l |
| `v2.17.0` | 2025-08-21 | Low | ## 2.17.0  ([Full Changelog](https://github.com/jupyter-server/jupyter_server/compare/v2.16.0...4484f122a70014c864b44fd0d8f50f660dae1538))  ### Enhancements made  - Avoid redundant call to `_get_os_path` in `_dir_model` [#1547](https://github.com/jupyter-server/jupyter_server/pull/1547) ([@joeyutong](https://github.com/joeyutong)) - Allow specifying extra params to scrub from logs [#1538](https://github.com/jupyter-server/jupyter_server/pull/1538) ([@jtpio](https://github.com/jtpio)) - Add a l |
| `v2.17.0` | 2025-08-21 | Low | ## 2.17.0  ([Full Changelog](https://github.com/jupyter-server/jupyter_server/compare/v2.16.0...4484f122a70014c864b44fd0d8f50f660dae1538))  ### Enhancements made  - Avoid redundant call to `_get_os_path` in `_dir_model` [#1547](https://github.com/jupyter-server/jupyter_server/pull/1547) ([@joeyutong](https://github.com/joeyutong)) - Allow specifying extra params to scrub from logs [#1538](https://github.com/jupyter-server/jupyter_server/pull/1538) ([@jtpio](https://github.com/jtpio)) - Add a l |

## Citation

- HTML: https://www.freshcrate.ai/projects/jupyter-server
- Markdown: https://www.freshcrate.ai/projects/jupyter-server.md
- Dependencies JSON: https://www.freshcrate.ai/api/projects/jupyter-server/deps

_Generated by freshcrate.ai. Indexes pypi releases for AI-agent ecosystem packages._
