A framework for building portable, self-contained DAG workflows decoupled from orchestration.
Project description
Fluxly — Lightweight framework for portable, self-contained DAG workflows, decoupled from orchestration.
🚀 Introduction
Fluxly is a lightweight framework for building and running directed acyclic graph (DAG)-based workflows.
The entire workflow acts as a self-contained execution endpoint:
- Run them locally or via CLI commands, API calls, or environment triggers.
- Package them in containers for portability.
- Integrate seamlessly with higher-level orchestrators (Argo, Airflow, Prefect, CI/CD) without extra glue code.
With Fluxly, pipelines are highly structured, enabling safer execution, easier debugging, and better modularity.
Workflows can run standalone or as part of a larger system, making Fluxly both lightweight and flexible.
❓ Why Fluxly (the problem it solves)
- Unstructured container pipelines tend to become spaghetti: ad‑hoc scripts across containers, inconsistent inputs/outputs, and scattered retries/timeouts/logging with no shared wrapper.
- Heavyweight orchestrators like Airflow add operational burden (schedulers, DBs, webservers, DAG deployment) when all you need is a simple, portable workflow image.
- Orchestrator‑coupled SDKs (e.g., Prefect) optimize for remote control planes and persistent backends, introducing communication channels and runtime coupling that don’t fit autonomous, fire‑and‑forget jobs.
- Fluxly keeps logic structured and isolated inside a single codebase and container: typed I/O models, explicit DAG, uniform entrypoints (CLI/API/env), and clear node boundaries. Any scheduler can trigger it, but your workflow remains clean and portable.
- Best when each Docker stays simple and self‑sufficient, and you want clarity, low overhead, and no hidden glue.
- In monorepos—or by wrapping Fluxly—you can centralize shared services, typed inputs, validations, outputs, and metadata to fit your org standards. This thin wrapper standardizes containers and removes boilerplate across pipelines.
🔌 Generated Entrypoints (CLI and API)
The package automatically exposes a CLI command and API endpoints for each registered workflow.
Auto-generated CLI commands per workflow.
Auto-generated API endpoints per workflow in Swagger UI.
📚 Documentation
Comprehensive documentation for Fluxly is available online:
- View the docs: GitHub Pages
✨ Key Features
- Flexible entrypoints – workflows can be triggered via CLI, API calls, or environment variables.
- DAG-based workflows – define arbitrary connections between nodes and their dependencies.
- Highly structured workflows – strict validation ensures safer pipelines, easier debugging, and predictable behavior.
- Self-orchestrated nodes – each node manages its own execution, retries, and dependencies.
- Lightweight building blocks – workflows are self-contained units that can run independently in any environment.
- Extensible by design – wrap workflows with custom classes to add logging, metrics, or integrations.
- Local-first development – debug and run workflows standalone, then scale seamlessly to CI/CD or external orchestrators.
🛠️ Technology Stack
- Pydantic: Strict data validation and schema for inputs/outputs.
- Typer: Easy wrapper for building great CLIs.
- FastAPI: Modern, high-performance web framework for building APIs.
- Uvicorn: Lightning-fast ASGI server for running FastAPI apps.
- Loguru: Simple, efficient logging for Python.
- Diagrams: Auto-generate DAG diagrams as code.
- Pixi: Cross-platform package and environment management.
- Ruff: Lightning-fast linting.
- Mypy: Static type checking for Python, enforcing type safety and correctness.
- Coverage.py: Measures code coverage of tests for quality assurance.
- Pytest: Testing framework.
- MkDocs: Documentation generator for Markdown-based docs.
- Material for MkDocs: Modern, responsive theme for MkDocs.
- GitHub CI/CD: Continuous integration and deployment.
📦 Installation
Install with pip:
pip install fluxly
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fluxly-0.1.1.tar.gz.
File metadata
- Download URL: fluxly-0.1.1.tar.gz
- Upload date:
- Size: 527.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
93ec926d469c04c92bd2000eee0fb9951248a82730a7a7e98d9689eea733cbae
|
|
| MD5 |
bfe04112b121a0a2f2c12cf1c9cddcae
|
|
| BLAKE2b-256 |
cdc1b14c7928ea5c54b27a331e3a86313871b1b2ba6fc665a66b55ff372bd048
|
Provenance
The following attestation bundles were made for fluxly-0.1.1.tar.gz:
Publisher:
deploy.yml on ShaharBand/fluxly
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fluxly-0.1.1.tar.gz -
Subject digest:
93ec926d469c04c92bd2000eee0fb9951248a82730a7a7e98d9689eea733cbae - Sigstore transparency entry: 829275746
- Sigstore integration time:
-
Permalink:
ShaharBand/fluxly@b59abb94a9711ab90a8082be35a40e217d7927fc -
Branch / Tag:
refs/heads/main - Owner: https://github.com/ShaharBand
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
deploy.yml@b59abb94a9711ab90a8082be35a40e217d7927fc -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file fluxly-0.1.1-py3-none-any.whl.
File metadata
- Download URL: fluxly-0.1.1-py3-none-any.whl
- Upload date:
- Size: 33.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cd3b13a9069cddc688dce1cb76afe34227717a13e22ae73872679e88fff115eb
|
|
| MD5 |
3ac1c1a8595444adf872e60455c5c21b
|
|
| BLAKE2b-256 |
32d87478b12630fdb12caf827f4fa620c59ef39ea9e5b8cf8331d219627f2af0
|
Provenance
The following attestation bundles were made for fluxly-0.1.1-py3-none-any.whl:
Publisher:
deploy.yml on ShaharBand/fluxly
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fluxly-0.1.1-py3-none-any.whl -
Subject digest:
cd3b13a9069cddc688dce1cb76afe34227717a13e22ae73872679e88fff115eb - Sigstore transparency entry: 829275752
- Sigstore integration time:
-
Permalink:
ShaharBand/fluxly@b59abb94a9711ab90a8082be35a40e217d7927fc -
Branch / Tag:
refs/heads/main - Owner: https://github.com/ShaharBand
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
deploy.yml@b59abb94a9711ab90a8082be35a40e217d7927fc -
Trigger Event:
workflow_dispatch
-
Statement type: