---
name: flow
kind: syntax
since: 0.1
stability: stable
---

Workflow definition.

```axon
flow Name(param: Type) -> ReturnType {
  step Stage {
    ask: "prompt"
    output: ReturnType
  }
}
```

A `flow` is a named, parameterised composition of `step`s. The
return type is mandatory and checked end-to-end: every terminal
step must produce a value assignable to it. Flows are first-class
references — they can be invoked from `run` statements, embedded
in `axpoint`s, or driven by `daemon`s.

Effects performed inside a flow body are tracked in the type
checker's effect row; flows that consume `Trusted<T>` or emit on a
shielded channel surface those effects in the signature.
