
ObzenFlow records every event, decision, and effect, and reconstructs any run exactly through deterministic replay. Correctness lives in the core. Storage, transport, and deployment stay swappable at the edge. Ships as a single binary, with no platform, broker, or cluster to run.

What makes ObzenFlow durable?
Journal<T> trait, and the core cannot even know which backend holds it.Explore ObzenFlow

Try It Today
Start with the smallest flow, then move into service backends and live AI workloads.
flow! model with the smallest runnable example in the repo.
Getting started tutorial Ok(flow! {
name: "char_transform",
journals: disk_journals(PathBuf::from("target/char-transform-logs")),
stages: {
characters = source!(CharInput => characters_handler);
transform_text = transform!(CharInput -> TextChunk => transform_text_handler);
collect_text = stateful!(TextChunk -> TransformedText => collect_text_handler);
output = sink!(TransformedText => output_handler);
},
topology: {
characters |> transform_text;
transform_text |> collect_text;
collect_text |> output;
}
})
Open Source
ObzenFlow is available under the MIT License or Apache License 2.0, at your option. Both are OSI-approved licenses, so the framework stays open to inspect, modify, and build on.
Proudly created in Canada. 🇨🇦 Built for the world. ❤️
The OSI Approved Open Source License mark, OSI, and Open Source Initiative are trademarks of Open Source Initiative. ObzenFlow is not affiliated with or endorsed by OSI.