Hi Aman,
Technically, you can create a single GUI that can talk to multiple kits. However, it maybe quite challenging to setup. If you have 3 completely independent kits, with 3 different emulators (i.e. 3 different cables being plugged into the computer), then the first challenge you will have is creating a target configuration(ccxml file) that can talk to 3 emulators. It is possible by entering emulators serial address into target configuration file, but then your configuration becomes hard coded to that combination of emulators. Thus if you wanted to get your gui to work on multiple 3 HW kit combos, then you would need a separate .ccxml file for each combo. Also, not all emulators supports this functionality well. Unfortunately, I don't which will work.
If you have a custom board with a single emulator that then talks to 3 HW kits, then it is a bit simpler as your emulator connection could be generic.
I would suggest that you try this in CCS, if you can get CCS to talk to 3HW kits and you are ok with limitations, then this would also work with GUI Composer.
In GUI Composer the main thing that would need to change is how variables are bound. If you open your app.json file each variables "serverBindName" property would need to be adjusted with an explicit string that addresses the CPU where that variable is. see below for an example. level1Khz is the varialbe name. The string that appears in square brackets is the same name that appears in CCS Debug View after you launch a debug session.
Unfortunately, there is no GUI way of doing this, thus .json file would need to be manually edited, which unfortunately is more difficult and error prone than pasting variable names.
"propertyName": "value",
"serverBindName": "cpus['TCI6608 Device Cycle Approximate Simulator, Little Endian_0/TMS320C66x_0'].level1Khz",
"widgetId": "widget_cpu_name_zero",
"options": {"dataType": "String"}
Regarding downloading .out file.
Your app should have a appInitScrip.js, which is a DSS script that performs initialization steps. If you open this file you should see a line that is something like "session.memory.loadProgram...". This is the line that loads a program. You can change this to "session.symbol.load..." to just load symbols from the .out. DSS documentation is in CCSv[5,6]\ccs_base\scripting\docs\GettingStarted.htm. If you wanted to get more advanced you could do some sort of a magic number at a fixed memory location to detect whether your program is actually in targets memory and then have logic that loads the program only when that magic number is not there.
Lastly, regarding variables: If you have access to CCS project, then I would use that to figure out what important variables are. If that does not work, then I would suggest posting in motor control forum.
Martin