Remote Jupyter Kernel Launcher with SSH port forwarding
Project description
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jupyter_remote_kernel-2.7.1.tar.gz.
File metadata
- Download URL: jupyter_remote_kernel-2.7.1.tar.gz
- Upload date:
- Size: 14.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
820e12c2af1452b3657b4ab1e8b354931af760fdf84c0e5d7135dfd140c2e81e
|
|
| MD5 |
f2ef0701ece15fb81d790e81fdafb219
|
|
| BLAKE2b-256 |
e52344574c3b2062ab01fb9885564c8f4a6e9a352dbf5945e9081aa2106bab52
|
File details
Details for the file jupyter_remote_kernel-2.7.1-py3-none-any.whl.
File metadata
- Download URL: jupyter_remote_kernel-2.7.1-py3-none-any.whl
- Upload date:
- Size: 15.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a23aae7fcfbb3ca99d2eada7852f9521f63d6d3a90126a6ac14e8241c56f8024
|
|
| MD5 |
20b3e9d4f81ebee79f68f81e53cdd7d9
|
|
| BLAKE2b-256 |
e8cc47063c9f36d1d9f20b3f25e0a5cac6c08e1f663ee615a39030682af9f65b
|