GateHub
Overview
GateHub is an auxiliary system component. It is necessary to connect boards via USB cable and useful for running multiple Node.js components on one physical machine. You can get it from Download section, then install and run as any other Node.js component (see Reference for details). Below you can find explanation of each GateHub functionality:

Gateway for SerialGateDevice library
If your board don't have embedded network communication, or if you don't want to use it in some specific use case, you can use SerialGateDevice library (see Arduino reference for more about Arduino libraries) in conjunction with GateHub started on machine your board is connected to. GateHub scans Serial Ports and - if SerialGateDevice is detected - GateHub opens WebSocket connection with Local Server for it and act as relay, passing messages from Serial Port to WebSocket and vice-versa.
Common discovery service
Each Node.js process using Device or Controller library has built-in discovery service that allows it to find Local Server within local network basing on discovery messages broadcasted by Local Server. You can start multiple such processes on one physical machine, however, only one of them will be able to listen on discovery port at time. Therefore, it can take a while for all the processes to join Local Server (next process will wait until previous one releases discovery port). If your system is meant to run permanently it might not be a big problem, but if you want to launch your system periodically and it consists of many components running on one physical machine, it can take significant amount of time before all the components will get online. With GateHub running on such physical machine, all the processes will fetch discovery information from GateHub instead of using their built-in discovery services and won't block each other.
Autostart
If your system contains several components meant to run on one physical machine, you can use Autostart functionality to start them all together with GateHub. To add components to Autostart list, you just need to modify autostart.js file under GateHub root directory, adding process working directory and start command for each process. Example:
const autostart = [
['./component1', 'npm run start'],
['./my-components/component2', 'npm run start'],
['../component3', 'node index.js']
];
Configuration
GateHub configuration is stored in ./dist/config.js and - if necessary - can be overriden directly in file, or using environment variables (with parameter names in upper snake case - i.e. discoveryPort should be DISCOVERY_PORT). By default, Local Server is configured as follows:
hubDiscoveryPort: 10000
discoveryKeyword: GateServer
discoveryPort: 10001
discoveryInterval: 5000
useFixedUrl: false
fixedUrl: localhost:10002
Meaning of parameters:
hubDiscoveryPort - port on which GateHub will wait for GET requests from devices/controllers
discoveryKeyword - identifier of server to which SerialGateDevices will be connected
discoveryPort - port on which GateHub will listen to discovery messages
discoveryInterval - expected interval of sending discovery messages (milliseconds)
useFixedUrl - if set to "true", GateHub will connect SerialGateDevices to fixedUrl instead of using discovery
fixedUrl - fixed server location. Has no effect if useFixedUrl is false