I was thinking recently about how much i hate current CI/CD pipeline definition tools (something I do semi-regularly), and i realized that roc would be an ideal fit as a language to define pipelines and tasks. Particularly the platform system has the potential to solve one of the main issues that current CI/CD type tools have, tasks can just do whatever weird scary stuff. roc would, allow you to make your tasks clearly state what permissions they need and what things they might access. The security plus rocs minimal syntax and type inference making it good for scripting tasks makes it seem like an ideal language to define both a pipeline and it's tasks.
I firmly believe that CI/CD tools should be build using proper programming languages rather than turning yaml into it's own bastard language with no tooling and some god awful template syntax.
Some prior work in this space is:
https://github.com/ocurrent/ocurrent
https://dagger.io/
I've not had an opportunity to use either of these in a serious capacity but i hope to try dagger in my next serious CI/CD pipeline i setup.
I hadn't seen this idea anywhere so i thought I'd throw it out here :)
Might be worth checking out this Roc build tool by @Brian Hicks. I believe he is no longer actively working on it, but there might be some overlap between your ideas
https://github.com/roc-lang/rbt
This would be great! Optional record fields plus tag unions would both make writing CI definitions wayyyy nicer because they make it clear what the possible options and defaults are naturally.
I played around with using roc to generate terraform and it was quite nice because of the optional record fields and tags.
Brian Carroll said:
Might be worth checking out this Roc build tool by Brian Hicks. I believe he is no longer actively working on it, but there might be some overlap between your ideas
https://github.com/roc-lang/rbt
Thanks, that's interesting. Though I'd say it's more like a replacement for make, than a replacement fro github actions. Though, it's certainly very related.
Isaac Van Doren said:
I played around with using roc to generate terraform and it was quite nice because of the optional record fields and tags.
Yeah, pulumi would probably be a better option for using roc in the "Infrastructure as Code" world. They have bindings for f# that I've checked out a bit, they are much more focused on using external languages for config rather than terraform that seems pretty attached to hashicorp-lang. I know they have CDK-TF but It wasn't very complete and had more limited bindings last I looked.
Last updated: Jun 16 2026 at 16:19 UTC