Thanks! Here's a more detailed comparison:
https://github.com/preloopdev/preloop/blob/main/docs/preloop.... The TLDR is act(much like Forgejo/Gitea) try to behaviorally emulate how your workflows run in docker containers. Preloop uses the exact same protocol the official runner does and runs each job in microvms. I try to match not only te request/response bodies, but down to the job/step log/annotations/conclusions level, so you could essentially use the official runner against preloop, and it would work as it would communicating with Github. Preloop is also designed to be agent-native from the ground up so an agent can drive the entire CI in real-time and debug like we do. Forgejo has the closest compatibility among the three in practice, and if you are fully off Github, I think it's a good enough choice. Here's a more detailed description of some things we do to ensure compatibility:
https://github.com/preloopdev/preloop/blob/main/docs/conform...