Flowly
Flowly is a modular, type‑safe, and fully asynchronous Rust library that lets you build robust, data‑driven pipelines for audio, video, and any stream‑based processing.
It is composed of several lightweight crates that can be used independently or together:
flowly-core– fundamental building blocks (streams, filters, sinks, etc.)flowly-io– I/O primitives and adapters for common media formatsflowly-service– orchestration and lifecycle management of pipeline tasksflowly-spsc– single‑producer single‑consumer zero‑allocation channel
All components are designed to work seamlessly with tokio and futures.
[!NOTE]
Flowly is still in active development. The current stable release is 0.4.6.
Features
- Composable – combine tiny, well‑tested components into complex workflows.
- Zero‑allocation – minimal runtime overhead using lock‑free primitives.
- Async‑first – built on top of
async-stream,futuresandtokio. - Extensible – easy to add custom components, adapters, or backends.
- Cross‑platform – works on Linux, macOS, Windows, and WASM (with
wasm-bindgen).
Quick Start
use ;
use VideoSource;
use run;
use Runtime;
async
The example above uses the
pipeline!macro to wire components together. Each component follows a common trait signature, making it trivial to swap implementations.
Documentation
Full API reference and guides are available on docs.rs.
See the Examples folder for more comprehensive tutorials:
Architecture
┌───────────────────────────────────────────────────────────────┐
│ Flowly Core (0.4) │
│ ┌─────────────────┐ ┌───────────────────────────────┐ │
│ │ Streams/Forks │←→│ Filters / Transformations │ │
│ └─────────────────┘ └───────────────────────────────┘ │
│ │ │
│ ▼ │
└───┬───────────────────────────────────────────────────────────────┘
│
▼
┌───────────────────────┐
│ Flowly Service (0.4) │ (Orchestration & lifecycle)
└───────────────────────┘
▲
│
▼
┌───────────────────────┐
│ Flowly IO (0.4) │ (I/O adapters, codecs)
└───────────────────────┘
▲
│
▼
┌───────────────────────┐
│ Flowly SPSC (0.4) │ (Zero‑allocation channel)
└───────────────────────┘
All crates expose a minimal surface and use pub use to re‑export the most important items.
This structure keeps the core lightweight while still giving you full access to high‑level features.
Getting Started
Prerequisites
- Rust 1.75+ (stable)
- Cargo
tokioruntime (installed as dependency)
Installing
Running the examples
Contribution Guide
We welcome contributions!
Run the test suite:
License
MIT License – see LICENSE
Community
- GitHub Issues: https://github.com/flowly-team/flowly/issues
- Discuss on GitHub Discussions
Roadmap
| Feature | Status |
|---|---|
| WASM support | ❌ |
| GPU acceleration | ❌ |
| Built‑in AI inference | ❌ |
| Extended audio codecs | ❌ |
Acknowledgements
- The Rust async ecosystem
- The tokio team
- The open‑source community that inspires modular design