Positron

Contents

Summary

If Positron fails to start an R session and reports a JEP 66 handshake timeout or HTTP Request failed while using Native IPC, switch the session transport to TCP or reset your Positron user configuration directories. This resolves most startup handshake issues related to experimental inter‑process communication (IPC) backends.

TL;DR: Add or set "kernelSupervisor.transport": "tcp" in Positron settings. Restart Positron. If that fails, remove ~/.positron and ~/.config/Positron and relaunch.

GUI Requirement

This software requires a graphical desktop environment. Launch Positron via one of:

  • Open OnDemand > Basic Desktop
  • Open OnDemand > Advanced Desktop (if you need GPU / extended runtime)

Launching Positron in a non-GUI or pure terminal session is not supported.

Symptoms

  • R (or Python) session does not start in Positron.
  • Status bar shows repeated reconnect attempts.
  • Multiple HTTP Request failures.
  • Log or notification: Failed to complete JEP 66 handshake: Timeout waiting for handshake.
Note: The JEP 66 message is a handshake protocol failure—not necessarily an R installation problem.

Likely Cause

The Native IPC transport can fail under certain cluster filesystem, permissions, or environment conditions. TCP transport is more tolerant in these environments and typically eliminates the startup race or visibility issue preventing the handshake.

Quick Fix: Switch Transport to TCP

  1. Open Positron Settings (GUI):
    Use the menu (e.g. File > Preferences > Settings) or the command palette (Ctrl+Shift+P) and search for Settings.
  2. Search for kernelSupervisor.transport. If a UI toggle is not present, choose Open Settings (JSON).
  3. Add (or modify) the JSON entry:

    {
      "kernelSupervisor.transport": "tcp"
    }
  4. Save the file and fully restart Positron (close all windows, then reopen).
  5. Start a new R session (open a .R file or the console). The session should initialize without the handshake error.

The setting below is the minimal diff:

"kernelSupervisor.transport": "tcp"

Full Reset Option (If Quick Fix Fails)

If switching to TCP does not resolve the issue, reset user configuration and allow Positron to regenerate defaults.

Caution: This removes custom themes, keybindings, extensions, and user preferences.
  1. Ensure Positron is closed.
  2. In a terminal inside your desktop session run:

    mv ~/.positron ~/.positron.bak.$(date +%Y%m%d-%H%M%S) 2>/dev/null || true
    mv ~/.config/Positron ~/.config/Positron.bak.$(date +%Y%m%d-%H%M%S) 2>/dev/null || true

    (You can remove the backups later if everything works.)

  3. Reload the module / environment (example—adjust if your module name differs):

    module purge
    module load Positron
  4. Launch Positron again from the GUI desktop.

Verification

On a successful first launch after reset you should see a message similar to:

Positron IDE default settings set up successfully under ~/.config/Positron/User/settings.json

Then opening an R console should show a standard prompt (e.g. >) without error messages.

If you do not see the setup success message, or the handshake timeout persists, proceed to Support.

Helpful Commands & Files

ItemDescriptionAction
~/.config/Positron/User/settings.jsonMain user settings file (JSON)Edit to add "kernelSupervisor.transport": "tcp"
~/.positronLegacy/auxiliary cache directoryRemove for full reset (after backup)
module load PositronLoads Positron environment (example)Run before launching GUI
ps -ef | grep -i positronCheck lingering processesTerminate stale ones before relaunch

FAQ

Does using TCP reduce performance?

For typical interactive analysis workloads, the difference between Native IPC and TCP loopback is negligible.

Will resetting remove my projects?

No. Only Positron configuration directories are removed. Your project directories remain untouched.

Can I switch back to Native IPC later?

Yes. Remove the transport setting or set it to its previous value and retest. If the handshake issue returns, stay with TCP.