Passenger vs Interactive Apps?

I understand that Open OnDemand apps come in two varieties, based on the following from the docs:

OnDemand is made up of the platform (Apache and NGINX), Passenger apps and plugins. Passenger apps are rack based Ruby apps, wsgi based Python web apps, or Node.js apps that follow a convention for the app’s startup file.

The Dashboard app, Shell app, and all other core apps in OnDemand are Passenger apps that can be replaced by custom Passenger apps. Or you can create your own.

OnDemand’s Interactive Apps are plugins that contain configuration files and a job template for running a VNC Server or Web Server application (such as Jupyter or MATLAB) on a compute node.

However, it isn’t really clear to me what the difference is. Passenger seems to refer to the Phusion Passenger web server, and I believe these can be interactive in the same way that interactive apps can be. Is it something to do with the fact that interactive apps are submitted as batch jobs, while Passenger apps run on the OnDemand server?

Yep, that basically nails it. OOD itself is a passenger app and there’s others you could build and launch from OOD to do the same, while the interactive apps are like you said, actual submitted batch jobs on the cluster you are interacting with.