Wondering what’s next for npm?Check out our public roadmap! »

    TypeScript icon, indicating that this package has built-in type declarations

    0.5.1 • Public • Published


    Video Chat with JupyterHub peers inside JupyterLab, powered by Jitsi.

    install from pypi install from conda-forge reuse from npm continuous integration interactive demo

    This extension is composed of:

    • a Python package named jupyter_videochat, which offers:
      • a jupyter_server extension which provides convenient, configurable defaults for rooms on a JupyterHub
      • a JupyterLab federated extension named jupyter-videochat
        • also distributed on npm
        • for more about the TypeScript/JS API, see CONTRIBUTING

    jupyter-videochat screenshot


    • python >=3.6
    • jupyterlab ==3.*


    Install the server extension and JupyterLab extension with pip:

    pip install -U jupyter-videochat

    ...or conda:

    conda install -c conda-forge jupyter-videochat


    If you are seeing the frontend extension but it is not working, check that the server extension is enabled:

    jupyter server extension list
    jupyter server extension enable --sys-prefix --py jupyter_videochat

    If you launch your Jupyter server with jupyter notebook, as Binder does, the equivalent commands are:

    jupyter serverextension list
    jupyter serverextension enable --sys-prefix --py jupyter_videochat

    If the server extension is installed and enabled but you are not seeing the frontend, check the frontend is installed:

    jupyter labextension list

    If you do not see jupyterlab-videochat, the best course of action is to uninstall and reinstall, and carefully watch the log output.


    pip uninstall jupyter-videochat


    Server Configuration

    In your jupyter_server_config.json (or equivalent .py or conf.d/*.json), you can configure the VideoChat:

    • room_prefix, a prefix used for your group, by default a URL-frieldy version of your JupyterHub's hostname
      • can be overriden with the JUPYTER_VIDEOCHAT_ROOM_PREFIX environment variable
    • jitsi_server, an HTTPS host that serves the Jitsi web application, by default meet.jit.si
    • rooms, a list of Room descriptions that everyone on your Hub will be able to join


      "VideoChat": {
        "room_prefix": "our-spiffy-room-prefix",
        "rooms": [
            "id": "stand-up",
            "displayName": "Stand-Up",
            "description": "Daily room for meeting with the team"
            "id": "all-hands",
            "displayName": "All-Hands",
            "description": "A weekly room for the whole team"
        "jitsi_server": "jitsi.example.com"

    Client Configuration

    In the JupyterLab Advanced Settings panel, the Video Chat settings can be further configured, as can a user's default displayName and email. The defaults provided are generally pretty conservative, and disable as many third-party services as possible. Additionally, access to globally-accessible public rooms may be enabled.

    Binder Client Example

    For example, to enable all third-party features, public rooms, and open in the main area by default:

    • create an overrides.json

        "jupyter-videochat:plugin": {
          "interfaceConfigOverwrite": null,
          "configOverwrite": null,
          "disablePublicRooms": false,
          "area": "main"
    • Copy it to the JupyterLab settings directory

      # postBuild
      mkdir -p ${NB_PYTHON_PREFIX}/share/jupyter/lab/settings
      cp overrides.json ${NB_PYTHON_PREFIX}/share/jupyter/lab/settings

    Start a Meet by URL

    Appending ?jvc=room-name to a JupyterLab URL will automatically open the Meet (but not fully start it, as browsers require a user gesture to start audio/video).

    Binder URL Example

    On Binder, use the urlpath to append the argument, ensuring the arguments get properly URL-encoded.

                                                             # URL-encoded  [? ] [=  ]


    If you have two repos (or branches) that contain:

    • content that changes frequently
    • a stable environment

    ...you can use nbgitpuller to have fast-building, (almost) single-click URLs that launch right into JupyterLab showing your meeting and content. For example, to use...

    ...and launch directly into JupyterLab showing

    • the Preface notebook
    • the Office Hours room

    ...the doubly-escaped URL would be something like:



    npm i jupyterlab-videochat

    DownloadsWeekly Downloads






    Unpacked Size

    63 kB

    Total Files


    Last publish


    • avatar
    • avatar