Skip to content

GuideDay-to-day use. Assumes you've run Ganymede once.

Switching from jupyter_server ​

Ganymede replaces the server, not the kernels. If you run jupyter lab today, your Python notebooks keep running on ipykernel, with pandas, matplotlib and the rest of your environment, once ipykernel's kernelspec is installed. What changes is the process between the frontend and the kernel: one binary instead of a Python environment with jupyter_server, jupyter_client, nbformat and traitlets in it.

This page lists what carries over, what is different, and what is missing, so you can judge the switch before making it.

What carries over ​

NotebooksThe same .ipynb files. Saves match Python's nbformat byte for byte, so they don't churn in git.
KernelsEvery installed kernelspec in the Jupyter data dirs and $JUPYTER_PATH, ipykernel's included.
TrustThe same notebook_secret and nbsignatures.db: a notebook trusted in Jupyter is trusted here.
LoginsThe same jupyter_cookie_secret, so a browser stays logged in.
JupyterLab settings~/.jupyter/lab/user-settings/ and workspaces/.
ClientsJupyterLab, VS Code's Jupyter extension, and other clients of the REST and websocket API. See JupyterLab and VS Code.
Headless runsganymede execute writes the same outputs as jupyter execute; ganymede trust replaces jupyter trust.

What is different ​

  • Installing JupyterLab. ganymede lab install downloads JupyterLab's browser files from PyPI without running Python, instead of pip install jupyterlab. Prebuilt extensions install with ganymede lab extension install <package>.

  • Kernels in an environment. jupyter_client also finds kernels under the Python environment it runs in (sys.prefix). Ganymede has no Python environment, so a kernel installed into a virtualenv or conda environment needs that prefix added: --kernelspec-root "$VIRTUAL_ENV/share/jupyter". A kernel installed with --user, as python -m ipykernel install --user does, is found as it is.

  • The default kernel is --default-kernel, or else the first kernelspec found, not python3.

  • Configuration is one TOML file instead of jupyter_server_config.py (CLI and configuration). The settings that carry over:

    jupyter_serverganymede.toml
    ServerApp.ip, ServerApp.portip, port
    IdentityProvider.tokentoken
    ServerApp.root_dirroot_dir
    ServerApp.base_urlbase_url
    ServerApp.allow_originallow_origins (a list)
    ServerApp.allow_credentialsallow_credentials
    ServerApp.allow_remote_access, ServerApp.local_hostnamesallow_remote_access, local_hostnames
    ServerApp.trust_xheaderstrust_xheaders
    ServerApp.cookie_secret_filecookie_secret_file
    ServerApp.max_body_sizemax_body_size
    MappingKernelManager.default_kernel_namedefault_kernel
    MappingKernelManager.cull_idle_timeoutcull_idle_secs
    KernelRestarter.restart_limitkernel_restart_limit
    FileCheckpoints.checkpoint_dircheckpoint_dir
    NotebookNotary.data_dirnotary_dir
    GatewayClient.url, GatewayClient.auth_tokengateway_url, gateway_token

    Other settings have no equivalent. An unknown key in the file is an error, so a setting that doesn't carry over can't be ignored silently.

What is missing ​

Server extensions (the Python half of some JupyterLab extensions), nbconvert's template exports (HTML, PDF, LaTeX, slides; script and Markdown work), and JupyterHub's single-user mode. Terminals and language servers (JupyterLab and VS Code) and real-time collaboration (Live editing and document rooms) do work, with no Python behind them. Known gaps has the full list and the details. If you depend on one of these, stay on jupyter_server for now, or run it for that one job: both servers share kernels, notebooks and signatures, so they can run side by side.

TypeScript notebooks ​

Ganymede was built for TypeScript notebooks with cdp-kernel, with no Python installed at all. The JavaScript ecosystem for data work is smaller than Python's, and there is no single library with pandas' reach. If your work is pandas and matplotlib, keep it on ipykernel; Ganymede runs both kernels side by side, and you can move notebook by notebook.

MIT license.