Gallium Data's architecture is very simple: it is a Java process, typically run in a Docker container.
This Java process contains a web server for the admin web app, but that server is usually enabled only during development and debugging. It is typically turned off in production to eliminate any security risks.
The Java process listens to TCP ports which correspond to connections in Gallium Data. Each connection specifies a client port, which is where database clients will connect. This means, of course, that every active connection in a Gallium Data repository must use a different client port.
When a connection is established by a database client, a connection is opened to the corresponding database server, and the Gallium Data engine starts to act as a gateway. It receives requests from the database client, parses them, determines whether they need to be acted upon, and sends them on to the database server.
The reverse is true: when a response is received from the database server, Gallium Data parses them, determines whether they need to be acted upon, and sends them over to the client.
That part in the middle, of course, is where Gallium Data offers enormous power, because it enables you to modify the requests and responses without making any changes to the client or the server.