Szál
Szál (Hungarian: thread) — Workflow orchestration engine for Rust
Define steps, wire them into flows with branching, retry, and rollback — then execute sequentially, in parallel, or as a DAG. Part of the AGNOS ecosystem.
Quick start
[]
= "1"
Sequential flow
use ;
use StepDef;
let mut flow = new;
flow.add_step;
flow.add_step;
flow.add_step;
flow.validate.unwrap;
DAG workflow
use ;
use StepDef;
let build = new;
let unit_test = new.depends_on;
let integ_test = new.depends_on;
let deploy = new
.depends_on
.depends_on;
let mut flow = new;
flow.add_step;
flow.add_step;
flow.add_step;
flow.add_step;
flow.validate.unwrap; // cycle detection + dependency validation
State machine
use WorkflowState;
let state = Created;
assert!;
assert!;
Modules
| Module | Description |
|---|---|
step |
Atomic workflow steps — timeout, retry, rollback, DAG dependencies |
flow |
Flow composition — sequential, parallel, DAG (Kahn's), hierarchical; versioned |
engine |
Execution config, flow result aggregation, distributed DAG runner |
state |
Workflow state machine with validated transitions |
condition |
Condition DSL evaluator with compiled-AST caching |
migration |
Flow versioning and schema migration across definition versions |
storage |
WorkflowStorage + in-memory ExecutionStore |
sql_store |
Durable ExecutionStore backends over sqlx (sqlite/postgres features) |
stream |
Stream step progress to SSE / WebSocket clients via a broadcast hub |
error |
Typed errors — step failure, timeout, retry exhaustion, cycle detection |
Execution modes
| Mode | Description |
|---|---|
Sequential |
Steps run one after another |
Parallel |
Steps run concurrently (no dependencies) |
Dag |
Dependency graph with cycle detection (DFS) |
Hierarchical |
Manager step delegates to sub-steps |
DAG flows can also run distributed across a fleet of engine instances via
Engine::run_distributed (the fleet feature).
Features
| Feature | Enables |
|---|---|
sqlite |
SqliteExecutionStore — durable execution tracking via sqlx |
postgres |
PostgresExecutionStore — durable execution tracking via sqlx |
fleet |
Engine::run_distributed — work-stealing DAG across fleet nodes |
majra |
Managed queue, metrics, heartbeat, rate limiting |
hardware |
Accelerator-aware step scheduling |
prometheus / barrier / dag |
Additional majra infrastructure |
The default build pulls no database or infrastructure dependencies.
Roadmap
| Version | Milestone | Status |
|---|---|---|
| 1.1 | Persistent state, flow composition, streaming output, richer condition DSL | Released |
| 1.2 | Persistent SQL backends, flow versioning, distributed DAG, SSE streaming, condition caching | Released |
| 1.3 | Crash recovery, Redis backend, cross-host fleet transport | Planned |
License
AGPL-3.0-only