{"id":992,"library":"jupyter-server-terminals","title":"Jupyter Server Terminals","description":"Jupyter Server Terminals is a Jupyter Server Extension that provides robust terminal support within the Jupyter environment. It allows users to run system shells directly in their web browser, offering functionalities akin to a local terminal. The library is actively maintained, with regular releases focusing on bug fixes and maintenance, and is currently at version 0.5.4. It requires Python >=3.8.","status":"active","version":"0.5.4","language":"python","source_language":"en","source_url":"https://github.com/jupyter-server/jupyter_server_terminals","tags":["jupyter","terminal","server extension","command line","web UI"],"install":[{"cmd":"pip install jupyter_server_terminals","lang":"bash","label":"Install latest version"}],"dependencies":[{"reason":"This is a Jupyter Server extension and requires Jupyter Server to function.","package":"jupyter-server","optional":false},{"reason":"Provides the backend for terminal emulation and websocket communication.","package":"terminado","optional":false}],"imports":[{"note":"Users typically interact with terminals via the Jupyter web interface after installing the extension. For advanced server-side configuration, one would interact with the Jupyter Server's extension management system, not direct imports from jupyter_server_terminals.","symbol":"Extension configuration","correct":"This library is primarily a Jupyter Server extension. Direct Python imports for programmatic end-user terminal creation or management are not its primary interface. Its functionality is exposed via the Jupyter Server and its web UI (JupyterLab/Notebook)."}],"quickstart":{"code":"pip install jupyter_server_terminals jupyterlab\njupyter lab","lang":"bash","description":"Install the `jupyter_server_terminals` extension along with `jupyterlab` (or `notebook`). Once installed, start JupyterLab from your terminal. The terminal functionality will be automatically available within the JupyterLab interface. You can open a new terminal from the Launcher or through the File menu."},"warnings":[{"fix":"Upgrade your `jupyter-server` installation to version 2.0 or higher: `pip install --upgrade jupyter-server`.","message":"Jupyter Server Terminals versions 0.5.0 and newer explicitly require Jupyter Server 2.0+ to function correctly. Older versions of Jupyter Server will result in an error during extension loading.","severity":"breaking","affected_versions":">=0.5.0"},{"fix":"Be aware of this architectural change if you're developing extensions that interact directly with Jupyter Server services or managing custom deployments. The service can now be managed as a standard Jupyter extension.","message":"The 'Terminals Service' transitioned from a core Jupyter Service to a Jupyter Server extension in Jupyter Server 2.0. While most end-users won't notice, this impacts how the service is managed and can be optionally disabled, which is relevant for sensitive deployment environments or advanced configurations.","severity":"gotcha","affected_versions":"All versions with Jupyter Server >=2.0"},{"fix":"Always close and halt notebooks (`File > Close and Halt`) and exit terminals (`exit` command) when not in use. Minimize the number of open tabs and avoid printing excessively large outputs. Re-use variables instead of creating multiple copies of large data in memory.","message":"Jupyter environments (including terminals) can suffer from memory issues, leading to unresponsive sessions or saving errors. This is often due to poor 'server hygiene,' such as not closing notebooks/terminals, excessive output, or inefficient code.","severity":"gotcha","affected_versions":"All versions"},{"fix":"If experiencing conflicts, consider changing the keyboard shortcut for either copy or the command palette in JupyterLab's settings. Alternatively, use Ctrl+Shift+V for paste, which works as usual, or hold Shift and right-click for the native browser context menu (though this may not work in all browsers).","message":"On *nix shells in JupyterLab, the default keyboard shortcut for copying (Ctrl+Shift+C) can conflict with the default shortcut for toggling the command palette (`apputils:activate-command-palette`).","severity":"gotcha","affected_versions":"All versions in JupyterLab"},{"fix":"Execute `pip install` commands in a shell environment (e.g., command line, shell script, or via `subprocess` in Python), not as direct Python code within a `.py` file.","message":"The test script failed with a `SyntaxError` because `pip install` was used as a Python statement. `pip install` is a shell command and cannot be run directly as Python code within a script. This prevents the library from being installed and evaluated.","severity":"breaking","affected_versions":"All versions (execution environment issue)"},{"fix":"Ensure shell commands are run in a shell environment (e.g., your terminal) or use Python's `subprocess` module to execute them programmatically from within a script. For package installation, run `pip install <package_names>` in your command line interface before executing your Python script.","message":"The test or installation script attempted to execute a shell command (e.g., `pip install`) directly within a Python script, leading to a `SyntaxError`. This prevents the specified libraries from being installed and the rest of the script from running.","severity":"breaking","affected_versions":"All versions (of scripts attempting this execution method)"}],"env_vars":null,"search_vec":"'0.5.4':59 '3.8':63 'activ':43 'akin':35 'allow':22 'browser':32 'bug':50 'command':68 'current':56 'direct':28 'environ':20 'extens':11,67 'fix':51 'focus':48 'function':34 'jupyt':1,4,9,19,64 'librari':41 'line':69 'local':38 'maintain':44 'mainten':53 'offer':33 'provid':13 'python':62 'regular':46 'releas':47 'requir':61 'robust':14 'run':25 'server':2,5,10,66 'shell':27 'support':16 'system':26 'termin':3,6,15,39,65 'ui':71 'user':23 'version':58 'web':31,70 'within':17","created_at":"2026-03-29T08:37:53.351684+00:00","updated_at":"2026-04-16T15:59:30.013586+00:00","problems":{"verify_error":"no import statement found"},"ecosystem":"pypi","meta_description":null,"install_score":0,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":"0.5.4","cli_name":"","cli_version":null,"type":"library","homepage":"https://jupyter.org","github":"https://github.com/jupyter-server/jupyter_server_terminals","docs":"https://jupyter-server-terminals.readthedocs.io","changelog":null,"pypi":"https://pypi.org/project/jupyter-server-terminals/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["devops","web-framework"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"skip","verified_at":"2026-06-28","last_verified":"2026-06-28","next_check":"2026-07-05","install_tag":"stale"}}