Skip to main content

🌊 flowyml

flowyml Logo
The Enterprise-Grade ML Pipeline Framework for Humans

CI Status PyPI Version Python 3.10+ License UnicoLab


FlowyML is a lightweight yet powerful ML pipeline orchestration framework. It bridges the gap between rapid experimentation and enterprise production by making assets first-class citizens. Write pipelines in pure Python, and scale them to production without changing a single line of code.

🚀 Why FlowyML?

Feature FlowyML Traditional Orchestrators
Developer Experience 🐍 Native Python - No DSLs, no YAML hell. 📜 Complex YAML or rigid DSLs.
Type-Based Routing 🧠 Auto-Routing - Define WHAT, we handle WHERE. 🔌 Manual wiring to cloud buckets.
Smart Caching ⚡ Multi-Level - Smart content-hashing skips re-runs. 🐢 Basic file-timestamp checking.
Asset Management 📦 First-Class Assets - Models & Datasets with lineage. 📁 Generic file paths only.
Multi-Stack 🌍 Abstract Infra - Switch local/prod with one env var. 🔒 Vendor lock-in or complex setup.
GenAI Ready 🤖 LLM Tracing - Built-in token & cost tracking. 🧩 Requires external tools.
Build-Time Validation ✅ Type Safety - Catches mismatches at build time. 💥 Runtime errors only.
Map Tasks 🗺️ Parallel Maps - @map_task with retries & concurrency. 🔁 Manual parallelism boilerplate.
Dynamic Workflows 🔀 Runtime DAGs - Generate pipelines based on data. 📐 Static definitions only.
GenAI Assets 🎯 Prompt & Checkpoint - First-class prompt versioning and training resumability. 📝 Unmanaged text files.
Stack Hydration 🏗️ YAML → Live Stack - StackConfig.to_stack() wires infra automatically. ⚙️ Manual component assembly.

⚡️ Quick Start

This is a complete, multi-step ML pipeline with auto-injected context:

from flowyml import Pipeline, step, context

@step(outputs=["dataset"])
def load_data(batch_size: int = 32):
    return [i for i in range(batch_size)]

@step(inputs=["dataset"], outputs=["model"])
def train_model(dataset, learning_rate: float = 0.01):
    print(f"Training on {len(dataset)} items with lr={learning_rate}")
    return "model_v1"

# Configure and Run
ctx = context(learning_rate=0.05, batch_size=64)
pipeline = Pipeline("quickstart", context=ctx)
pipeline.add_step(load_data).add_step(train_model)

pipeline.run()

🌟 Key Features

1. 🧠 Type-Based Artifact Routing (New in 1.8.0)

Define artifact types in code, and FlowyML automatically routes them to your cloud infrastructure.

@step
def train(...) -> Model:
    # Auto-saved to GCS/S3 and registered to Vertex AI / SageMaker
    return Model(obj, name="classifier")

2. 🌍 Multi-Stack Configuration

Manage local, staging, and production environments in a single flowyml.yaml.

export FLOWYML_STACK=production
python pipeline.py  # Now runs on Vertex AI with GCS storage

3. 🛡️ Intelligent Step Grouping

Group consecutive steps to run in the same container. Perfect for reducing overhead while maintaining clear step boundaries.

4. 📊 Built-in Observability

Beautiful dark-mode dashboard to monitor pipelines, visualize DAGs, and inspect artifacts in real-time.

5. 🎯 Evaluations Framework

Production-grade evaluation system with 29+ scorers — classification, regression, GenAI (LLM-as-a-judge), and adapters for DeepEval, RAGAS, and Phoenix:

from flowyml.evals import evaluate, EvalDataset, get_scorer

data = EvalDataset.create_genai("my_test", examples=[...])
result = evaluate(data=data, scorers=[get_scorer("relevance"), get_scorer("ragas.faithfulness")])
result.notify_if_regression(threshold=0.05)

6. 🗺️ Map Tasks & Dynamic Workflows

Distribute work over collections with @map_task and generate pipelines at runtime with @dynamic:

from flowyml import map_task, dynamic

@map_task(concurrency=8, retries=2, min_success_ratio=0.95)
def process_document(doc: dict) -> dict:
    return transform(doc)

@dynamic(outputs=["best_model"])
def hyperparameter_search(config: dict):
    sub = Pipeline("hp_search")
    for lr in config["learning_rates"]:
        sub.add_step(train_with_lr(lr))
    return sub

7. 📦 Artifact Catalog with Lineage

Centralized artifact discovery, tagging, and lineage tracking — works local and remote:

from flowyml import ArtifactCatalog

catalog = ArtifactCatalog()  # Auto-selects local SQLite or remote API
catalog.register(name="classifier", artifact_type="Model", parent_ids=[dataset_id])
lineage = catalog.get_lineage(model_id)  # Full parent→child graph

📦 Installation

# Install core
pip install flowyml

# Install with everything (recommended)
pip install "flowyml[all]"

📓 FlowyML Notebook — Design Pipelines Visually

FlowyML Notebook is the companion reactive notebook environment for FlowyML. It replaces Jupyter with a DAG-powered, production-ready notebook that ships directly to FlowyML pipelines.

Feature Description
🔄 Reactive DAG Cells form a dependency graph — change a variable, only dependent cells re-execute
📝 Pure .py Storage Git-friendly, lintable, importable — no .ipynb JSON
🚀 Pipeline Promotion Promote notebooks to production FlowyML pipelines with one click
🧾 43 Recipes Reusable code templates across Core, Assets, ML, Evals, and more
🤖 AI Assistant Context-aware code generation (OpenAI, Google AI, Ollama, Anthropic)
📊 Rich Data Explorer Automatic DataFrame profiling with statistics, charts, and correlations
🌐 Publish as App Turn any notebook into a web app with 5 layout options
pip install flowyml-notebook
fml-notebook dev  # 🔥 Launch with hot-reload

📖 FlowyML Notebook Documentation · GitHub · PyPI


📚 Documentation

Visit FlowyML Docs for the full guide:


Built with ❤️ by UnicoLab

Metadata

Release files for flowyml 2.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for flowyml 2.2.1
File Size Uploaded
flowyml-2.2.1.tar.gz 4.9 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for flowyml 2.2.1
File Interpreter ABI Platform
flowyml-2.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 10.0 MB

Release files / flowyml-2.2.1.tar.gz

Download URL flowyml-2.2.1.tar.gz
Size 4.9 MB
Tags Source
SHA-256 checksum
How to use checksums
85a81dcfa4dc8fe5b99a299c4e5b9ad828d35705d86fd3d403c3859d25d2bc15
BLAKE2b-256 checksum
How to use checksums
2db15be0bd3cf8160ed1325350a4f8f30adbfb6703cb001b2c6238b8e8826e37
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.4.1 CPython/3.11.16 Linux/6.17.0-1022-azure

Release files / flowyml-2.2.1-py3-none-any.whl

Download URL flowyml-2.2.1-py3-none-any.whl
Size 5.1 MB
Tags Python 3
SHA-256 checksum
How to use checksums
f0f24a2643fd871de07e0285cededccac1ec3b61b980e12e55eb7f560465b253
BLAKE2b-256 checksum
How to use checksums
30a5e35c3d3398175c0746a807c99235d7b95affc9dc873b3d96bceffdc2a6d0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.4.1 CPython/3.11.16 Linux/6.17.0-1022-azure

Release history Release notifications | RSS feed

This release

2.2.1 This release

2 release files

2.2.0

2 release files

2.1.1

2 release files

2.1.0

2 release files

1.10.0

2 release files

1.9.2

2 release files

1.9.1

2 release files

1.9.0

2 release files

1.8.0

2 release files

1.7.2

2 release files

1.7.1

2 release files

1.7.0

2 release files

1.6.0

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page