Skip to main content

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

  1. sshfs Mount Support
    Added native sshfs support for mounting remote working directories during kernel startup.

  2. 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 -lc probing 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 sshfs is missing on the remote host.
  • Ensured reliable detection and re-probing of ipykernel after installation.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jupyter_remote_kernel-2.7.1.tar.gz (14.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jupyter_remote_kernel-2.7.1-py3-none-any.whl (15.4 kB view details)

Uploaded Python 3

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

Hashes for jupyter_remote_kernel-2.7.1.tar.gz
Algorithm Hash digest
SHA256 820e12c2af1452b3657b4ab1e8b354931af760fdf84c0e5d7135dfd140c2e81e
MD5 f2ef0701ece15fb81d790e81fdafb219
BLAKE2b-256 e52344574c3b2062ab01fb9885564c8f4a6e9a352dbf5945e9081aa2106bab52

See more details on using hashes here.

File details

Details for the file jupyter_remote_kernel-2.7.1-py3-none-any.whl.

File metadata

File hashes

Hashes for jupyter_remote_kernel-2.7.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a23aae7fcfbb3ca99d2eada7852f9521f63d6d3a90126a6ac14e8241c56f8024
MD5 20b3e9d4f81ebee79f68f81e53cdd7d9
BLAKE2b-256 e8cc47063c9f36d1d9f20b3f25e0a5cac6c08e1f663ee615a39030682af9f65b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page