December 19, 2025
Queue the hot takes
Show HN: Stepped Actions – distributed workflow orchestration for Rails
Rails gets a new workflow brain; devs debate ‘do we need this’ while flexing their own tools
TLDR: Stepped is a new Rails add‑on that coordinates multi-step jobs and remembers progress. Commenters split between loving a simpler alternative to heavy tools like Temporal, defending the classic “database row + next job” pattern, and asking how it stacks up against [Chrono Forge](https://github.com/radioactive-labs/chrono_forge).
Rails devs just got a new toy: Stepped, a plug-in that turns big, messy chores—like server setup, DNS magic, and health checks—into tidy, trackable steps. It runs jobs in the background, remembers progress, and even lets multiple tasks share work so you don’t redo the same thing twice. Think “to-do list for computers,” with guardrails like one-at-a-time lanes and easy skip-if-done reuse.
Comments immediately split into camps. One crowd wants less heavyweight tooling: “to avoid the complexity of Temporal,” asks moh_quz, pressing on whether Stepped saves to the database after every step for crash recovery. The purists push the classic playbook: deedubaya argues the Rails-native approach—track a row, enqueue the next job—actually scales better because the state is queryable and UI-friendly. Meanwhile, comparison shopping kicks off: silasb points to Chrono Forge and demands receipts. Another reader drops a TypeScript flex with chained tasks, and chao- rolls in with the veteran war story: they’ve built this “four separate times” in-house. The vibe? Curiosity with a side of “do we really need another workflow engine,” punctuated by lightweight-vs-native flame sparks and a quiet meme: every team writes their own workflows, then hopes this one saves them from doing it again. For real
Key Points
- •Stepped is a Rails engine that orchestrates workflows as trees of persisted actions executed via Active Job.
- •Extracted from Envirobly, it powers deployment-related tasks such as DNS provisioning, retries, and health checks.
- •Models act as actors: actions can be defined directly on Active Record models with a DSL for steps, hooks, and keys.
- •Concurrency lanes group actions by concurrency_key under Stepped::Performance, enforcing single-file queueing and superseding older work.
- •Reuse via checksums enables Stepped::Achievement to skip or share work; outbound actions can complete later via external events.