I built a weird Rust compiler that runs entirely through GitHub
I’ve been sitting on the idea for this for a long time and finally built it.
It’s called Thermite:
https://microservices.net.in/thermite-web/
The basic idea is that you can compile Rust without having Rust installed on the machine you’re using.
You open the site, sign in with GitHub, choose:
- Rust toolchain/version
- target platform
- .rs file / .zip project
- or now, a GitHub repository + project root
and hit Pour.
The interesting part is that there’s no backend server running the builds.
The website is just a static GitHub Pages site. Each user gets their own public thermite-crucible repo, the source gets committed there, and that commit triggers a GitHub Actions workflow. The workflow builds the exact commit that triggered it and publishes the resulting binary as an artifact/release.
I also wanted multiple builds to be independent, so the basic unit is:
one pour → one commit → one Actions run → one ingot
Live logs were another fun problem because GitHub’s Actions log endpoint isn’t directly readable from a browser due to the redirect/CORS situation. So the runner streams its own build output into a separate orphan branch, which the frontend polls.
There’s also an optional encryption mode (untested as I am still working on this) for people who don’t want their source sitting plaintext in the public crucible. The encryption keys are deliberately split between the repository and the user’s machine, and the build still happens on GitHub’s runner.
And yes, I know this is probably a ridiculous way to build a Rust compiler service. That’s kind of why I wanted to do it.
The original motivation was actually pretty simple: I wanted something where I could be sitting on a phone or some random computer, grab a Rust project, choose a target, and get a binary without setting up a compiler/toolchain on that machine.
Would love to hear what people think of the architecture, especially if you spot something I’ve overlooked.
Source is here too:
https://github.com/microserv-net/thermite-web
It’s very much a personal project at the moment, so criticism is welcome.