Roast-ing AI workflows with Ruby
25 Jun 2025
•
Dion Almaer
I have been following Obie Fernandez for a loooong time, dating back to his insights on Agile and software development in general.
I was recently excited to see him pop up as a Principal Engineer at Shopify, and I saw him shipping some great open source there, such as Raix, a Ruby library for all things AI, somewhat akin to popular libraries such as AI SDK for the JavaScript ecosytem.

Where Raix gives you a DSL for working with AI components, Obie just launched Roast, which itself uses Raix of course!
Introducing Roast
Shopify’s Roast is a framework for building autonomous, structured workflows powered by LLMs to reason about software artifacts. Its core purpose is to bring reliability, reproducibility, and transparency to AI-assisted software development — moving beyond one-off prompts toward deterministic, versioned, and auditable reasoning processes.
At its heart, Roast introduces a workflow engine that defines steps (code + config), plans (step sequences), and runs(tracked executions). It supports LLMs and tools as pluggable executors, enabling tasks like summarization, code review, or architecture analysis to be defined declaratively and executed with stateful context. By treating software reasoning as a programmable system, Roast unlocks safe collaboration between humans and AI at scale, with a clear “why” rooted in reclaiming control and traceability in LLM-driven development.
Roasting code with Glaser
I decided to take it for a spin, and created a simple, fun tool called Glaser
Glaser is an AI-powered code review and commentary tool that uses Shopify's Roast workflow engine to "roast" your codebase — not just by finding bugs and inefficiencies, but by delivering those insights with snark, wit, and a comedic edge inspired by Nikki Glaser.
You point Glaser at a codebase, and then Roast fires up and runs various steps in a workflow that give silly roast-like commentary on said codebase. Here is a snippet from the documentation roaster workflow:
This documentation agent is configured via YAML:
You can quickly see the structure, allowing you to choose models, define tools, and setup steps to run through, which have prompts. In this example, they are inline, but you can externalize them into their own files.
You can get into control flow in the YAML itself via if:
and each:
type constructs, or you can just dive in and create your own custom steps by creating a Ruby subclass of BaseStep.
All in all, if you are a fan of the Ruby ecosystem, you have a new tool that you will enjoy exploring!