The server has other main components as the Report Processor, or the Websocket Server. The latter provides information to the Client.
The agent is an application composed by scripts discovering information, called executors. They can access any external services or use the Faraday's Report Processor.
The data found by them is sent to the Faraday server by a middleware called Dispatcher, which will be the only module communicating with the server. Moreover, the Dispatcher is in charge of the scheduling of executors, backed by its implementation with asyncio.
The Dispatcher uses the Faraday API to first communication and publishing the data, specially the bulk_create endpoint. In addition, the only communication via the websocket server are the commands from faraday, such as which executor will run and its arguments values, execution status updates, etc. The executors communicates by the standard output the data to publish, and by the standard error any information about the run.