Repository F# setup
open System
open System.IO
open System.Threading
open System.Threading.Tasks
open Axial
open Axial.Layers
open Axial.Console
open Axial.FileSystem
open Axial.Hosting
open Axial.Hosting.Browser
open Axial.Hosting.Node
open Axial.PlatformService
open Axial.State
open Axial.Telemetry
open Axial.Telemetry.JavaScriptStreams
A Flow produces one result. A FlowStream produces values over time without first loading all of them into memory.
Use it when the input may be large, slow, or unbounded: paginated APIs, message subscriptions, and incremental file
or network adapters.
> (FlowStream.fromSeq [ 1..6 ] : FlowStream<int>)
- |> FlowStream.filter (fun number -> number % 2 = 0)
- |> FlowStream.map (fun number -> number * 10)
- |> FlowStream.runCollect
- |> Flow.run ();;val it: Exit<int list,Never> = Success [20; 40; 60]The stream is cold: constructing it starts nothing. It is pull-based: downstream asks for each next value, so upstream cannot outrun it. It shares Flow's environment, typed failures, cancellation, scopes, and structured fibers.
Getting started builds one complete stream; the other guides then explain each part.
Guides
- Getting started: construct, transform, and consume one stream.
- Constructing streams: existing values, one Flow, and effectful unfolding.
- Transforming values: pure and effectful operators.
- Batching and parallelism: strict batches versus continuously replenished work.
- Composing streams: append, flatten, and zip.
- Consuming streams: folds, incremental effects, collection, and resource cleanup.
- Platform boundary: portable stream mechanics and host-specific adapters.
For one OS integration example, see the Process guide's Streaming output page. It explains
how Axial.Process exposes stdout and stderr as a FlowStream; process handling is not part of the stream model.
The FlowStream API lists every operator after these guides establish the model.

