jupyter-server-documents
A JupyterLab extension that provides RTC capabilities.
What it is and what it does
Jupyter Server Documents is a JupyterLab extension that shifts notebook and document state management from the client to the server, enabling real-time collaboration between multiple users. It replaces the standard Jupyter document handling with a server-backed architecture built on jupyter-ydoc and pycrdt, allowing simultaneous edits, automatic conflict resolution, and proper handling of out-of-band changes (such as git checkout). The extension also improves kernel management with more reliable execution and connection handling.
The package includes an optional outputs service that stores notebook outputs separately from the document on disk, reducing memory usage and speeding up navigation for notebooks with large computational results. When disabled (the default), outputs remain in the standard YDoc and .ipynb file. Installation is straightforward via pip; the extension integrates directly into JupyterLab 4.4.0 or later and requires Python 3.10 or higher.
Use it for:
- Enable multiple data scientists to edit and run the same notebook simultaneously without conflicts or data loss.
- Reduce server memory footprint for notebooks with extensive outputs by storing outputs separately on disk.
- Improve notebook load times and responsiveness when working with computationally intensive analyses.
- Ensure reliable kernel execution and recovery in team environments where network interruptions or restarts are common.
- Maintain document integrity when notebooks are modified outside JupyterLab (e.g., via git operations).
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
A JupyterLab extension that moves document state to the server, enabling real-time collaboration, automatic saving, and optional off-disk output storage for improved performance.
Yes. The extension is actively maintained (released 7 days ago), has no known vulnerabilities, low install friction, and a permissive BSD license. It solves a real problem—collaborative notebook editing with server-side state—and is built on stable Jupyter infrastructure. Best suited for teams or researchers who need real-time collaboration or who work with large outputs; individual users on older JupyterLab versions (< 4.4.0) should verify compatibility first.
Install
jupyter-server-documents on PyPI
pip
pip install jupyter-server-documentsuv
uv add jupyter-server-documentspoetry
poetry add jupyter-server-documentsInstalling jupyter-server-documents
Before you install
Low friction installation as a pure Python wheel. Actively maintained with a release 7 days ago. Requires JupyterLab >= 4.4.0 and Python >= 3.10; supports current Python versions (3.10–3.13). Six runtime dependencies are all within the Jupyter ecosystem.
License in practice
BSD 3-Clause License permits commercial and private use with minimal restrictions; you must retain copyright notices and disclaimers in source and binary distributions. No patent or trademark concerns for typical use.
Quickstart
pip install jupyter-server-documents
# Then start JupyterLab normally:
jupyter lab
# Optionally enable outputs service in jupyter_server_config.py:
# c.OutputProcessor.use_outputs_service = True
Requires JupyterLab >= 4.4.0 and Python >= 3.10. The extension is a server plugin; no direct Python import is needed for basic use.
Verify before relying
- Whether the outputs service feature (optional, off by default) is production-ready or still experimental.
- Performance impact of real-time collaboration under high concurrency or with very large notebooks.
- Compatibility with existing JupyterLab extensions that may also manage document state or kernel communication.
Package facts
| License | BSD 3-Clause License Copyright (c) 2025, Project Jupyter All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the… (full text in the JSON record) (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 6 — jupyter-collaboration-ui, jupyter-docprovider, jupyter-server-fileid, jupyter-server, jupyter-ydoc, pycrdt |
| Maintenance | actively maintained — 7 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 127,444/month — #11,743 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: jupyter_server_documents-0.3.3-py3-none-any.whl
Keywords: jupyter, jupyterlab, jupyterlab-extension
Tags
More Application Frameworks packages
FastAPI is a Python web framework for building…
permissive · top 100 on PyPI
annotated-docProvides a way to document function parameters,…
permissive · top 100 on PyPI
textualTextual is a Python framework for building…
permissive · top 100 on PyPI
typerTyper builds command-line applications from…
permissive · top 1,000 on PyPI
mcpBuild and connect to Model Context Protocol…
permissive · top 1,000 on PyPI
WerkzeugWerkzeug is a WSGI utility library providing…
permissive · top 1,000 on PyPI
jupyter-server-fileidA Jupyter Server extension that provides a File…
permissive · top 5,000 on PyPI
jupyterlab-chatA JupyterLab extension that adds a chat…
permissive · top 15,000 on PyPI
jupyterlab-serverProvides REST API handlers and utilities that…
permissive · top 1,000 on PyPI
jupyter-archiveA JupyterLab extension that adds archive…
permissive · top 15,000 on PyPI
nbclassicProvides the classic Jupyter Notebook interface…
permissive · top 5,000 on PyPI
jupyterlab_notebook_awarenessA JupyterLab extension that tracks which…
permissive · top 15,000 on PyPI
jupyter-docproviderAdds real-time collaborative editing to…
permissive · top 15,000 on PyPI
jupyter-collaborationAdds real-time collaborative editing to…
permissive · top 15,000 on PyPI
jupyter-collaboration-uiAdds real-time collaboration UI elements to…
permissive · top 15,000 on PyPI
jupyterlab-commands-toolkitExposes JupyterLab commands to Python code and…
permissive · top 15,000 on PyPI