# Architecture

Firstly, let's cover the architecture used to make build requests by Monarch. The following diagram demonstrates how the different components involves tie together.

<figure><img src="https://3353642664-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdkbiggPMgoB7gNihfYbJ%2Fuploads%2FJaMSxoGPm4DxZdf0J0Qw%2FBuilder%20architecture.jpg?alt=media&#x26;token=ec581bc5-55a0-4e3f-ba8d-5bb15b5aa48f" alt="" width="437"><figcaption></figcaption></figure>

The Monarch build client is a binary that exists on Monarch development images, and shouldn't be touched. Its existence isn't relevant to the developer. It communicates with the main C2 server using gRPC to forward build requests and responses to the Python build service.

The python build service is a HTTP server that runs a developer-defined callback each time a build request is received. This callback returns a build response object, which the service compiles and sends back to the build client.
