Jupyter Remote Kernel
A CLI tool for launching and managing remote Jupyter kernels over SSH port forwarding.
Big Upgrade
- Remote workspace mounting via native
sshfs, keeping local and remote directories in sync during kernel sessions. - Automatic mount lifecycle: the workspace is mounted when the kernel starts and unmounted cleanly when it stops, preventing stale mounts.
- Transparent file access: notebooks, scripts, and data files appear locally but are backed by the remote environment.
- Seamless development flow: edit code with your local editor/IDE while execution happens remotely with full GPU/CPU resources.
- Error recovery: detects failed or interrupted mounts and retries or cleans up gracefully.
Features
- SSH tunneling for all five Jupyter ZMQ channels (
shell,iopub,stdin,control,hb) - Support Bastion you can use -J user@basion:port to forward into your private network
- Kernel spec management: add, list, and delete remote kernels for seamless integration with Jupyter and VS Code
- Graceful tunnel management: start and stop SSH tunnels as needed
Simple Architecture
[ JupyterLab / VS Code ]
|
~/.local/share/jupyter/kernels/remote_cuda/kernel.json
|
[ remote_kernel CLI ]
|
SSH tunnel <====> [ Remote Host: ipykernel + Python ]
|
/tmp/<connection file> is copied to remote host before starting
Installation
pip install jupyter_remote_kernel
Usage
Kernel Spec Management
Add a remote kernel
Registers a new kernel spec so it appears in Jupyter and VS Code:
remote_kernel add <HostAlias> --name "Remote CUDA"
This creates a kernel spec at ~/.local/share/jupyter/kernels/remote_cuda/kernel.json:
{
"argv": [
"/path/to/remote_kernel",
"--endpoint", hostalias,
"-f", "{connection_file}"
],
"display_name": "Remote CUDA",
"language": "python"
}
List all registered kernels
remote_kernel list
Delete a kernel
Delete by slug (preferred):
remote_kernel delete remote_cuda
Or by display name:
remote_kernel delete "Remote CUDA"
Both remove the kernel spec from ~/.local/share/jupyter/kernels/<slug>.
Notes
- Slug names are lowercased from the display name, with spaces and dashes converted to underscores.
- SSH jump host (bastion) support: If your remote server is only accessible via a jump host (bastion), simply configure with -J.
Integration with JupyterLab and VS Code
Once a remote kernel is registered, it will appear in the JupyterLab and VS Code kernel selector.
Select it as you would any local kernel to launch a remote session.
License
Apache License Version 2.0, January 2004# Changelog
Changelog
[2.7.0] - 2025-08-17
New Features
-
sshfsMount Support
Added nativesshfssupport for mounting remote working directories during kernel startup. -
Enhanced Logging
Probe results and command outputs are logged with concise console previews (first 50 characters) while persisting full logs to file.
Changes
- Replaced Paramiko and
bash -lcprobing with plain native ssh (ssh endpoint 'cmd'), ensuring faster and more reliable execution. - Simplified subprocess handling with consistent quoting using single quotes.
Bug Fixes
- Fixed timeout issues during remote probing caused by subshell invocation.
- Improved error handling when Python or
sshfsis missing on the remote host. - Ensured reliable detection and re-probing of
ipykernelafter installation.
Metadata
Release files for jupyter-remote-kernel 2.7.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| jupyter_remote_kernel-2.7.1.tar.gz | 14.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| jupyter_remote_kernel-2.7.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 29.9 kB
Release files / jupyter_remote_kernel-2.7.1.tar.gz
| Download URL | jupyter_remote_kernel-2.7.1.tar.gz |
|---|---|
| Size | 14.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
820e12c2af1452b3657b4ab1e8b354931af760fdf84c0e5d7135dfd140c2e81e
|
|
BLAKE2b-256 checksum How to use checksums |
e52344574c3b2062ab01fb9885564c8f4a6e9a352dbf5945e9081aa2106bab52
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.2
|
Release files / jupyter_remote_kernel-2.7.1-py3-none-any.whl
| Download URL | jupyter_remote_kernel-2.7.1-py3-none-any.whl |
|---|---|
| Size | 15.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a23aae7fcfbb3ca99d2eada7852f9521f63d6d3a90126a6ac14e8241c56f8024
|
|
BLAKE2b-256 checksum How to use checksums |
e8cc47063c9f36d1d9f20b3f25e0a5cac6c08e1f663ee615a39030682af9f65b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.2
|