Which code is executing the coupling iterations given that preCICE does not really have a centralized engine to orchestrate the simulation?
It is the preCICE library! Every participant loads the library and works on its own part of the mesh. Of course, there needs to be some cooperation between the different processes, but this does not need to be blocking or through a central process. If you want to know more details about the implementation of specific features, you may look into our literature guide, in particular in the dissertation of Benjamin Uekermann. And of course, the code is open!
Moved from our FAQ on precice.org.