IronFlow

The workflow is alive.

Lua in. Reliable execution out.

Build a flow

103 nodesCLI + API + webhooksMIT

  1. A webhook and CLI command start a flow.
  2. User and order requests run independently.
  3. Results join at a routing step.
  4. High-value, standard, and bulk branches run in parallel.
  5. A failed task retries before the flow stores its result.
Example run
users.fetch 142ms completeorders.fetch 184ms completeroute.segments 38ms completesend.email 273ms retry 2/3store.users 91ms complete

One language. One runtime. One visible path.

Define, run, and observe workflows

01

Define

Declare dependencies, retry policy, and outputs in readable Lua.

02

Run

Execute the same flow from a shell, an API request, or a named webhook.

03

Observe

Follow run and task lifecycle events without surrendering your infrastructure.

local flow = Flow.new("nightly_report")
flow:step("users", nodes.http_get({ url = users_url }))
flow:step("orders", nodes.http_get({ url = orders_url }))
flow:step("report", function(ctx)
    return build_report(ctx.users_data, ctx.orders_data)
end):depends_on("users", "orders")

The runtime does the hard part

Branch.
Retry.
Rejoin.

  1. 00:00.000Fetch usersComplete
  2. 00:00.000Fetch ordersComplete
  3. 00:00.184Generate reportRetry 2/3
  4. 00:02.301Store resultComplete

Independent work runs in parallel. Dependencies wait. Retry and timeout policy stays with the flow—not scattered through every task.

Built-in capability

103 nodes.
Zero drag.

HTTPTransformDocumentS3AIDatabaseMCPShell

When the flow needs judgment

Hand it to a crew.

Some steps can't be encoded: research, interpretation, a decision someone must stand behind. IronCrew — IronFlow's sibling runtime, the same single-binary Rust + Lua shape — runs specialist agent crews with human questions and fail-closed approval gates. The flow hands over one step, gets a structured decision back over plain HTTP, and keeps moving.

01InvestigateAgents gather evidence, compare sources, and challenge assumptions.
02DecideSpecialists disagree on purpose, then return one structured decision.
03EscalateA crew can stop and ask a person. Approvals fail closed.

Start where you are

One command.
The flow starts moving.

Run an example

ironflow run examples/00-showcase/nightly_report.lua