Hey HN. I've been frustrated with Github Actions' reliability, and inability to run workflows locally. Preloop is a Rust reimplementation of the GitHub Actions, both the runner(tracking the latest version) and the control plane that runs in hardware-isolated microvms on MacOS/Linux/Windows(we use smolvm project that uses the libkrun vmm).The microvms starts in <400ms from a packed artifact, and cow-clones for each job are instant. The control plane speaks the exact official runner protocol, so the unmodified actions/runner binary can register, poll, execute, and report against it. Your existing workflow files run unchanged, but on your own hardware with zero GitHub-hosted minutes. Locally, you can also run uncomitted changes so you dont have to create a commit to run ci. If you are working solo or in a small team and have fast local hardware, you can use something like DHH's gh-signoff extension and merge directly so long as certain checks pass. We also support features such as pause-on-failure where upon failure, the vm is paused, opens up a shell, and allows you to fix the errors, then you can retry without rerunning all the jobs that worked(new step/job runs in a new fresh microvm to verify the changes) or you can attach directly to a running vm and see what steps each jobs are doing in real-time. Preloop also implements the Debug Adapter Protocol so you or your agent can drive your CI locally(with the built-in client) or you can use a DAP client like Vscode. You can also submit your changes to the server for CI to run and then after it can open a draft PR for you, with the updated checks, so we dont only rely on Webhooks from Github. I've invested heavily in ensuring conformance with the official runner protocol so I do different kinds of mitm proxying to make sure not only the request/response bodies match but also down to the job/step level conclusions/logs/annotations etc. Effectively, the official runner should work with our control plane.Act, Forgejo are all great, but they dont faithfully implement the official runner protocol so in practice some workflows dont quite work out of the box, and they also run the jobs in docker containers. Forgejo has the closest compatibility and is probably still a good option if you are fully migrating off github. With Act, there's a few mostly server-side features it doesnt implement(concurrency, some matrix features, oidc etc). forgejo has the closest compatibility, and is a good option if you are fully migrating off Github. Agent-ci is also a great option that uses the official runner image and implements the official protocol, but it is designed to run locally, runs in containers, and doesnt support some features we do(concurrency, newer V2 cache, Github token etc). Preloop is designed to also be run as a peristent server so we implement more submit updates to the checks api.
Lot more stuff coming, but i figured this is a good point to share with the community incase it might be interesting to some folks. Feel free to try it out.
Website: https://preloop.dev
Github: https://github.com/preloopdev/preloop