OnDemand Interactive Apps¶
This page covers the individual interactive applications available through Open OnDemand — Jupyter, Jupyter on GPU, RStudio, RStudio on GPU, and MATLAB. For logging in, managing files, and the general launch/connect/delete pattern, see the Open OnDemand overview.
Jump to an app:
-
Jupyter
Jupyter Notebook or JupyterLab on a CPU node.
-
Jupyter on GPU
Jupyter Notebook or JupyterLab on a GPU node.
-
RStudio
RStudio Server on a CPU node.
-
RStudio on GPU
RStudio Server on a GPU node.
-
MATLAB
The MATLAB desktop, served through the browser by
matlab-proxy.
Jupyter Notebook and Lab¶
The Jupyter app runs Jupyter Notebook or JupyterLab on a compute node with dedicated
resources. (This is the Jupyter app inside Open OnDemand — distinct from the standalone
JupyterHub portal at jupyter.crc.pitt.edu.) Launch it from the Jupyter tile on the
Dashboard, or from Interactive Apps → Jupyter.

On the launch form, set the job parameters and click Launch:
| Field | What it does |
|---|---|
| Cluster | Which cluster the session runs on (for example, htc). |
| Use JupyterLab instead of Jupyter Notebook? | Check for the JupyterLab IDE; leave unchecked for the classic Notebook. |
| Python version | The Python module to load (for example, python/ondemand-jupyter-python3.11). |
| Name of Custom Conda Environment | Leave blank to use the base environment. Otherwise, give the name (or full path) of a conda environment that already has JupyterLab installed. |
| Number of hours | Wall-time limit for the session. |
| Number of cores | 1–128 cores, roughly 8 GB of memory per core unless you request a whole node. |
| Memory (GB) | Optional explicit memory request. |
| Account | The Slurm allocation to charge; leave blank to use your default. |
Don't over-request cores
Unless your code is genuinely parallel (for example, thread-parallelized NumPy) or memory-hungry, a few cores is plenty — larger requests wait longer in the queue.


Your session is queued while it waits for resources, then starts running. When the card shows Running, click Connect to Jupyter to open the interface in a new tab.



When you're done, return to My Interactive Sessions and click the red Delete button to end the session and free the resources.
Jupyter on GPU¶
Jupyter on GPU is the same app running on a GPU node. It has no pinned tile — open it from Interactive Apps → Jupyter on gpu (under the Deep Learning group).

On the launch form, set the job parameters and click Launch:
| Field | What it does |
|---|---|
| Use JupyterLab instead of Jupyter Notebook? | Check for the JupyterLab IDE; leave unchecked for the classic Notebook. |
| Python version | Bundles the framework, Python, and CUDA together — for example, pytorch 2.5.1 python 3.11 cuda 12.4. |
| Cuda version | A separate CUDA module to load. Choose None if you're using PyTorch with its bundled CUDA packages. |
| Number of hours | Wall-time limit for the session. |
| Number of cores | 1–128 cores, roughly 8 GB of memory per core unless you request a whole node. |
| CPU Memory (GB) | Optional explicit memory request. |
| GPU type | Which GPU/node type to request (for example, rtx6k,96g,amd(avx512)). |
| Number of gpu cards | 1–4 cards on the node. |
| Account | The Slurm allocation to charge; leave blank to use your default. |
| Reservation | Leave blank unless you've been given a reservation. |


Click Launch. As before, the session is queued, then runs; when it shows Running, click Connect to Jupyter.



Your Jupyter session is a Slurm job
The session runs on a dedicated compute node with exactly the resources you requested on
the form — it is a normal Slurm job, not something running in your browser or on a shared
server. From a terminal inside JupyterLab, squeue -M all -u $USER lists it with its job
ID, node, and partition. This is also why the session waits in the queue, counts against
your allocation, and must be ended with Delete.

When you're done, end the session with the red Delete button, the same as any interactive app.
RStudio¶
RStudio Server runs the RStudio IDE in the browser on a compute node, so you can run more compute-intensive R work than on a login node. Launch it from the RStudio Server 2026 tile on the Dashboard, or from Interactive Apps → RStudio Server.

On the launch form, set the job parameters and click Launch:
| Field | What it does |
|---|---|
| R version | The R module to load (for example, 4.6.0). |
| Number of hours | Wall-time limit for the session. |
| Number of cores | 1–128 cores, roughly 8 GB of memory per core unless you request a whole node. |
| Memory (GB) | Optional explicit memory request. |
| Account | The Slurm allocation to charge; leave blank to use your default. |
| Reservation | Leave blank unless you've been given a reservation. |


The session is queued, then runs; when it shows Running, click Connect to RStudio Server.



The R modules bundle many R and Bioconductor packages. To install your own, open Clusters →
HTC Shell Access, load an R module (find the current one with module spider r), start R,
and use install.packages("pkg") or BiocManager::install("Bioconductor_pkg"). Use
.libPaths() to see where R searches.
Common RStudio errors¶
RStudio Server stores its state in your home directory (~/.local/share/rstudio or the legacy
~/.rstudio), which has a 75 GB quota. Large project files or timed-out sessions can fill it; you
can delete unused sessions from ~/.local/share/rstudio/sessions. When switching R versions, it
helps to remove ~/.local/share/rstudio (e.g. rm -rf ~/.local/share/rstudio) — it will be
regenerated.
Because the RStudio Server interface is a single-threaded process, a long-running operation can make another action (such as saving) time out with Status code 502. Usually nothing crashes — wait for the running code to finish and try again. If you exceed your requested time limit you'll see Status code 503; start a new session from Interactive Apps → RStudio Server.
Quitting RStudio does not free the node
Selecting File → Quit Session (or the red icon in RStudio) only closes RStudio — it does not end your interactive HTC session, and you keep consuming CPU hours. To end it, return to the Dashboard and click the red Delete button.
RStudio Server on GPU¶
RStudio Server on GPU is the same app running on a GPU node. Like Jupyter on GPU, it has no pinned tile — open it from Interactive Apps → RStudio Server on gpu (under the Deep Learning group).

On the launch form, set the job parameters and click Launch:
| Field | What it does |
|---|---|
| R version | The R module to load (for example, 4.5.0). |
| Number of hours | Wall-time limit for the session. |
| Number of cores | 1–64 cores on a GPU node, roughly 8 GB of memory per core unless you request a whole node. |
| Memory (GB) | Optional explicit memory request. |
| GPU type | Which GPU to request (for example, l40s). |
| constraint | A node feature to match (for example, amd,40g). |
| Number of gpu cards | 1–4 cards on the node. |
| Account | The Slurm allocation to charge; leave blank to use your default. |
| Reservation | Leave blank unless you've been given a reservation. |


The session is queued, then runs; when it shows Running, click Connect to RStudio Server.



This session is a Slurm job
An RStudio Server on GPU session is a Slurm job on a dedicated GPU node. From the RStudio
Terminal tab, squeue -M gpu -u $USER lists it with its job ID, node, and partition.

The R modules bundle many R and Bioconductor packages. To install your own, open Clusters →
HTC Shell Access, load an R module (find the current one with module spider r), start R,
and use install.packages("pkg") or BiocManager::install("Bioconductor_pkg"). Use
.libPaths() to see where R searches.
Common RStudio errors on GPU¶
RStudio Server stores its state in your home directory (~/.local/share/rstudio or the legacy
~/.rstudio), which has a 75 GB quota. Large project files or timed-out sessions can fill it; you
can delete unused sessions from ~/.local/share/rstudio/sessions. When switching R versions, it
helps to remove ~/.local/share/rstudio (e.g. rm -rf ~/.local/share/rstudio) — it will be
regenerated.
Because the RStudio Server interface is a single-threaded process, a long-running operation can make another action (such as saving) time out with Status code 502. Usually nothing crashes — wait for the running code to finish and try again. If you exceed your requested time limit you'll see Status code 503; start a new session from Interactive Apps → RStudio Server on gpu.
Quitting RStudio does not free the node
Selecting File → Quit Session (or the red icon in RStudio) only closes RStudio — it does not end your interactive session, and you keep consuming your allocation. To end it, return to My Interactive Sessions and click the red Delete button.
MATLAB¶
Two MATLAB apps are offered. Prefer matlab (the matlab-proxy web app); MATLAB on htc is
the older VNC-based version. Launch the web app from the matlab tile on the Dashboard.

The launch form is simpler than the other apps' — just a version, wall time, and cores:
| Field | What it does |
|---|---|
| Matlab version | The MATLAB release to load (for example, R2025a). |
| Number of hours | Wall-time limit for the session. |
| Number of cores | Cores on the node, roughly 8 GB of memory per core unless you request a whole node. |

The session is queued, then runs; when it shows Running, click Connect to Matlab.


MATLAB opens a Status Information panel while it starts, which can take a few minutes. It shows the license source (Pitt's Network License Manager) and confirms authentication, with controls to start, stop, or shut down the MATLAB process.

Once MATLAB loads, a small control widget — the badge icon near the top — lets you restart or sign out of MATLAB, and its color reflects the MATLAB status.

Shutting down MATLAB does not free the node
Stopping or shutting down MATLAB from the control widget ends the MATLAB process but not your interactive session. To release the node, return to My Interactive Sessions and click the red Delete button.
Other GUI applications — Stata, Mathematica, SAS, Cytoscape, QGIS, and more — launch the same way from the Interactive Apps menu.