System Overview
System diagram
Diagram illustrates how StarGate system components interacts with each other.

Main building blocks
Server - routes data, stores system image, serves user interface to browsers etc.
Device - defines GateValues, produces and/or consumes data
Optional features
Controller - receives system image from server, can read and write any GateValue on any device. Useful for automated device orchestration
User interface - displays user interface in web browser
GateHub - relays USB devices to Local Server, assists in running multiple devices on one physical machine
Remote access - allows accessing your system from outside local network
Operation principle
Local Server broadcasts it's discovery keyword and connection port number over UDP. Devices, controllers and GateHub uses DiscoveryService or fixed configuration to connect with connection port over WebSocket.

On hitting Local Server url from web browser, Local Server responds with LocalFrontend application. Application connects with Local Server over WebSocket (using Controller library internally) and displays User interface

See reference for individual components for more details.
Setting up components
To use any StarGate component (except Arduino libraries), you need machine with Node.js installed on it (version 18.17.0 or later). It can be laptop, PC, Raspberry Pi or similar. Basically anything able to run Node.js. If you don't have Node.js already, install it first. Below are some helpful links
In Windows, you can install and start any component by double clicking install.bat and start.bat scripts located in component root directory. You may need to confirm warning prompt on first use (here is some help on that)

In other systems (or if you prefer using terminal):
Open LocalServer directory in terminal and run command
npm install
Wait until installation completes and run
npm run start
Code base
All components works as standalone applications or libraries and - in most cases - should not require modifications of code base. However, if your feature cannot be implemented otherwise, or as reference, you can use our open-source repositories where all system components originates from. Repositories are published on GitHub, under stargate-system organization.

Please report any bugs or suggestions through issues tab on relevant library under stargate-system organization.