Flow Like Water

It started with a 47-step Kubernetes provisioning script. Create the namespace, apply the config maps, wait for the pods, check the health endpoints—each step dependent on the last. When step 38 failed due to a transient network error, I'd curse and start the whole thing over.

The obvious fix was adding retry logic. But wrapping each command in try-catch blocks turned readable scripts into nested callback hell. Tracking which steps had succeeded meant scattering state across variables. The script that was supposed to save time was now consuming it.

Then it clicked: what I really needed wasn't a script—it was a state machine. Each command should be a node that knows its preconditions, handles its own failures, and transitions cleanly to the next state. The execution engine should track progress, persist state, and let me resume from wherever things went wrong.

Flow Like Water is that engine. Tasks define their conditions and retry strategies declaratively. Groups coordinate related operations. Event listeners provide real-time progress for dashboards. And when something fails at step 38, you pick up right where you left off.

Details

Time
2023
Source
Package
Examples
Status
Active
License
MIT

Visual Demo

Flow Like Water