How-To Guides
Task-focused guides covering Step types, async webhooks, predicates, retries, memoization, for_each fan-out, Flow design patterns, and the environment variables that configure the engine in production.
Pick the simplest step type that fits: sync HTTP for fast services, async HTTP for long-running work with webhook callbacks, script for in-engine transforms, and flow for reusable sub-flows.
Configure HTTP endpoints, methods, timeouts, and URL placeholders. Includes the execution context headers (Argyll-Flow-ID, Argyll-Step-ID, Argyll-Receipt-Token, Argyll-Webhook-URL) and how the engine treats 4xx versus 5xx responses.
Write inline Lua or Ale scripts that run in the engine itself. Use them for small data transforms, derived fields, and routing logic where spinning up an external service would be overkill.
Practical patterns for designing Flows: picking goals correctly, fail-fast vs best-effort Step roles, collection deadlines, for_each fan-out, sub-flow composition, and an anti-pattern table for the mistakes you'll otherwise make.
Use async steps when work outlives a single HTTP request. Covers the webhook URL format, the receipt token idempotency model, and the safe retry pattern for completion callbacks.
Skip Steps based on Flow state with a Lua, Ale, or JSONPath predicate. Includes match predicates for filtering individual upstream values and the dependency pruning that follows a skipped Step.
Configure retry behavior per Step with work_config. Covers what triggers a retry (5xx and transport errors), what is permanent (4xx), the three backoff strategies, and the global defaults that apply when fields are omitted.
Mark a Step memoizable: true to cache successful results and skip re-execution on identical inputs. Covers the cache key (step definition plus inputs), in-memory LRU semantics, and when memoization is and isn't safe.
Mark an array input for_each: true and the engine expands it into one work item per element, processed in parallel. Covers Cartesian product over multiple for_each inputs, parallelism control, output aggregation, and partial failure.
Every environment variable that controls the engine, plus single-node and three-node Raft setups, the X-Argyll-Raft-State header for leader-aware load balancing, and an HAProxy config you can copy.