Getting Started with Open OnDemand (OOD)

Overview

Open OnDemand is a web portal for accessing the AI.Panther HPC cluster. It lets you launch interactive coding environments, manage files, submit jobs, and open a terminal, all from your browser. You must be on campus Wi-Fi or connected to the Florida Tech VPN to access the portal.

The three interactive apps below run on the cluster's vgpu nodes (NVIDIA L40S vGPU slices, sized for GUI/notebook work). For traditional batch work on the full cluster (CPU nodes, A100/H200 GPU nodes), use the Job Composer or the Shell to submit a regular sbatch job.

Applications available as of summer 2026:

  • Code Server (VS Code in the browser)
  • Jupyter Lab
  • Desktop (XFCE session via noVNC)

Open OnDemand application support is listed by visiting: https://www.openondemand.org/run-open-ondemand#enabled-applications

Request an Open OnDemand application on AI.Panther


Accessing OOD

Go to https://ood.fit.edu and sign in with your Florida Tech credentials. You will be prompted for DUO multi-factor authentication. After signing in, you will see the OOD dashboard.

You must be a member of the AI.Panther HPC group to access OOD. If you get an error after signing in, ask your faculty advisor or PI to submit an access request on your behalf:

AI.Panther HPC Access Request

The Dashboard

After logging in the dashboard shows:

  • Pinned Apps: quick-launch buttons for Code Server, Jupyter Lab, and Desktop.
  • Recently Used Apps: apps you have launched recently.
  • Quick Links: shortcuts to your home directory, terminal, job history, all apps, this getting started guide, and a link to submit a support request.
  • Project Storage: usage and quota cards for any /shared/projects/<name> directories you have access to. Each card shows space used vs the soft quota and the inode count. The progress bar turns yellow at 80% and red at 95% of the soft quota. The card title links to the project folder in the Files app. If you have no project group memberships, no cards appear. Access to a project folder is granted by AD group membership (ad-idm-ai-panther-projects-<name>); your PI requests the addition.

Navigation Bar

Files

Browse and manage files. You can upload, download, create, rename, edit, and delete. Three areas are visible:

  • /home1/<your username>: your home directory (Lustre, 78 TB total cluster wide).
  • /shared/projects/<project>: shared project space. Access is granted by AD group membership.
  • /shared/scratch: shared scratch space, writable by everyone. Files here may be cleaned up periodically.

Files you upload are immediately available in your interactive sessions and batch jobs since all three areas are mounted on every node.

Jobs

  • Job History: your past Slurm jobs with status, runtime, and links to output files. The Output column links straight to the working directory in the Files app.
  • Active Jobs: currently running and queued jobs.
  • Job Composer: create and submit batch jobs. A default template is provided with the SBATCH directives most people need. The template targets vdi-short (vgpu nodes, 15-minute walltime) by default. For CPU work, change --partition to short / med / long and adjust --time. For A100 / H200 GPU jobs, change --partition to gpu1 / gpu2 / h200 and add a --gres=gpu:<type>:<count> line. Output files use %x.%J.out and %x.%J.err naming, so a job named MyJob with ID 290029 produces MyJob.290029.out and MyJob.290029.err in the working directory.

Clusters

  • Shell Access: terminal on the login node (ai-panther.fit.edu). Use this for sbatchsqueuemodule load, creating virtual environments, and anything else command-line.
  • Module Browser: browsable index of all Spack modules available on the cluster. Use the names you see here in the Modules field on the interactive app forms.

Interactive Apps

All three interactive apps run as Slurm jobs on the vgpu nodes (vgpu01-03), which provide NVIDIA L40S vGPU slices (12 GB framebuffer each). You will not pick a specific node, just a partition.

App Default CPU / RAM / GPU Max CPU / RAM / GPU What it's for
Code Server 4 / 8 GB / 0 16 / 32 GB / 4 VS Code in the browser. Best for code editing, terminals, extensions.
Jupyter Lab 8 / 16 GB / 1 16 / 32 GB / 4 Notebook environment for Python, data analysis, scientific computing.
Desktop 4 / 8 GB / 1 16 / 32 GB / 1 Full XFCE desktop via noVNC. Use for GUI applications like Firefox or anything that needs a window manager.

All three open in a new browser tab.

Launching an Interactive App

  1. Click the app from the dashboard or the Interactive Apps menu.
  2. Fill out the form:
    • Partitionvdi-short (up to 1 hour), vdi-med (up to 8 hours), or vdi-long (up to 7 days). The hours field adjusts based on what you pick.
    • Hours and minutes: how long you need the session. The session terminates when time expires, there is no extension. Combined Hours + Minutes must not exceed the partition's time limit.
    • CPUs: cores to allocate (up to the maximum shown). Each vgpu node has 64 vCPU total.
    • Memory (GB): memory to allocate. Each vgpu node has ~500 GB total.
    • GPUs: L40S-12Q vGPU slices (12 GB VRAM each). Use 0 for plain coding, 1 for CUDA / notebook work. Request 2 or more only for DDP / multi-GPU training; slices do not pool VRAM, each shows up as a separate CUDA device.
    • Modules to load (optional): whitespace-separated list of module names, e.g. anaconda3 cuda. They are loaded with module load before the app starts. Browse names under Clusters > Module Browser.
    • Working Directory (optional): where the app should open. Leave blank to use your home directory.
  3. Click Launch.
  4. Your session appears under My Interactive Sessions, going through Queued > Starting > Running.
  5. Once running, click Connect to open the app in a new tab.

Session output files (scripts, logs, connection info) are stored under ~/ondemand/data/sys/dashboard/batch_connect/sys/<app>/output/<session-id>/. If a session ends unexpectedly the session card has a link to the output log, which is the first place to look for an error.

 

Jupyter kernels

The Jupyter app launches a system Python by default. To use your own packages, create a virtual environment in your home directory and register it as a kernel:

python3 -m venv ~/myenv
source ~/myenv/bin/activate
pip install ipykernel
python -m ipykernel install --user --name myenv

The new kernel will appear in the Jupyter launcher. As an alternative, load a conda or miniforge module with the Modules field and use its Python.

Submitting Batch Jobs to the Full Cluster

The interactive apps only land on the vgpu nodes. For jobs that need CPU compute, A100 GPUs, H200 GPUs, or longer runs than the interactive partitions allow, submit a regular sbatch job from the Job Composer or the Shell.

The cluster's batch partitions:

Partition Nodes Time limit Notes
short node01-16 45 min Default CPU partition
med node01-16 4 hours CPU
long node01-16 7 days CPU
eternity node01-16 unlimited CPU, capped at 2 nodes per job
gpu1 gpu01-04 unlimited 4x A100 SXM4 per node
gpu2 gpu05-08 unlimited 4x A100 PCIe per node
h200 gpu09-12 unlimited 8x H200 per node

Using the Job Composer

  1. Go to Jobs > Job Composer.
  2. Click New Job > From Default Template.
  3. Edit the job script: set --partition--time--cpus-per-task--mem, and any --gres=gpu:<type>:<count> line you need.
  4. Click Submit.

Using the Terminal

# from Clusters > Shell Access (lands on ai-panther.fit.edu)
sbatch myjob.sh
squeue -u $USER
sacct -j <jobid>

File Management

Files are shared cluster wide. Anything you put in /home1/<user> or /shared/projects/<project> is visible from every interactive session and every batch job.

Cluster Monitoring

Two Grafana dashboards are available so you can see what the cluster (and your jobs) are doing:

  • Cluster Health: real-time view of free CPU nodes, free GPU slices per type (A100 SXM, A100 PCIe, H200, L40S-12Q), partition CPU usage, and per-node-type GPU utilization.
  • Per-Job Metrics: CPU, memory, GPU, disk, and network usage for a specific running job. Enter your Cluster (head), Host (the node your job is on), and Job ID at the top. GPU panels filter to only the GPU indices Slurm allocated to your job. Note the GPU number shown is the host-side index; inside your job CUDA renumbers it starting at 0, so nvidia-smi in the session may show your assigned GPU as device 0 even though DCGM reports it under its host index.

If a panel is blank for the time range you're looking at, the job had already ended before that point.

Getting Help

If you run into issues or have questions, submit a support request:

Submit a Quick Ticket

Include the following:

  • What you were trying to do.
  • The error message or unexpected behavior you saw.
  • The session ID or job ID if applicable (found on the My Interactive Sessions page or in Job History).
  • If it's an interactive session that failed, the contents of the output log linked from the session card.