@floppy all an Engine really is is a Rack app that has a routing match associated with it at boot time via
#mount (routes end up compiled so there's no real 'dynamic' there to speak of), so if your plugins map naturally to sprouting a bunch of new paths, so much the better – spike out something with constraints (no reboot required!)
If it's something different to that? Dunno. Couldn't divine the OctoPrint boundary from a cursory glance...