Skip to main content

oryxflow

Socket Badge PyPI version License: MIT

Vetting oryxflow for a corporate package firewall? See Security & supply chain.

For data scientists and data engineers, oryxflow is a python library which makes building complex data science workflows easy, fast and intuitive. It is primarily designed for data scientists to build better models faster. For data engineers, it can also be a lightweight alternative and help productionize data science models faster. Unlike other data pipeline/workflow solutions, oryxflow focuses on managing data science research workflows instead of managing production data pipelines.

Why use oryxflow?

Data science workflows typically look like this.

Sample Data Workflow

The workflow involves chaining together parameterized tasks which pass multiple inputs and outputs between each other. The output data gets stored in multiple dataframes, files and databases but you have to manually keep track of where everything is. And often you want to rerun tasks with different parameters without inadvertently rerunning long-running tasks. The workflows get complex and your code gets messy, difficult to audit and doesn't scale well.

oryxflow to the rescue! With oryxflow you can easily chain together complex data flows and execute them. You can quickly load input and output data for each task. It makes your workflow very clear and intuitive.

Read more at:

4 Reasons Why Your Machine Learning Code is Probably Bad
How oryxflow is different from airflow/luigi

Badge Badge

When to use oryxflow?

  • Data science: you want to build better models faster. Your workflow is EDA, feature engineering, model training and evaluation. oryxflow works with ANY ML library including sklearn, pytorch, keras
  • Data engineering: you want to build robust data pipelines using a lightweight yet powerful library. You workflow is load, filter, transform, join data in pandas, dask, pyspark, sql, athena

What can oryxflow do for you?

  • Data science
    • Experiment management: easily manage workflows that compare different models to find the best one
    • Scalable workflows: build an efficient data workflow that support rapid prototyping and iterations
    • Cache data: easily save/load intermediary calculations to reduce model training time
    • Model deployment: oryxflow workflows are easier to deploy to production
  • Data engineering
    • Build a data workflow made up of tasks with dependencies and parameters
    • Visualize task dependencies and their execution status
    • Execute tasks including dependencies
    • Intelligently continue workflows after failed tasks
    • Intelligently rerun workflow after changing parameters, code or data
    • Quickly share and hand off output data to others

Installation

Install with pip install oryxflow. To update, run pip install oryxflow -U.

If you are behind an enterprise firewall, you can also clone/download the repo and run pip install .

Python3 only You might need to call pip3 install oryxflow if you have not set python 3 as default.

To install latest DEV pip install git+git://github.com/oryxintel/oryxflow.git or upgrade pip install git+git://github.com/oryxintel/oryxflow.git -U --no-deps

Claude Code plugin

Build oryxflow workflows faster with AI assistance. The oryxflow Claude Code plugin adds a skill that auto-activates when you edit pipeline files (tasks.py, flow.py, run.py) plus slash commands to scaffold and manage projects:

  • /oryxflow:init-project – scaffold a new oryxflow project from templates
  • /oryxflow:init-gitlfs – set up Git LFS to version data outputs (see Sharing data)
  • /oryxflow:oryxflow – manually invoke the skill (optional; it auto-activates on pipeline files)

Install in Claude Code:

/plugin marketplace add oryxintel/oryxflow-claude-plugin
/plugin install oryxflow@oryxflow

See the plugin repo for more details.

Example: Model Comparison

Below is an introductory example that gets training data, trains two models and compares their performance.

See the full ML workflow example here
Interactive mybinder jupyter notebook

import oryxflow
import sklearn.datasets, sklearn.ensemble, sklearn.linear_model
import pandas as pd


# get training data and save it
class GetData(oryxflow.tasks.TaskPqPandas):
    persists = ['x','y']

    def run(self):
        ds = sklearn.datasets.load_boston()
        df_trainX = pd.DataFrame(ds.data, columns=ds.feature_names)
        df_trainY = pd.DataFrame(ds.target, columns=['target'])
        self.save({'x': df_trainX, 'y': df_trainY}) # persist/cache training data


# train different models to compare
@oryxflow.requires(GetData)  # define dependency
class ModelTrain(oryxflow.tasks.TaskPickle):
    model = oryxflow.Parameter()  # parameter for model selection

    def run(self):
        df_trainX, df_trainY = self.inputLoad()  # quickly load input data

        if self.model=='ols':  # select model based on parameter
            model = sklearn.linear_model.LinearRegression()
        elif self.model=='gbm':
            model = sklearn.ensemble.GradientBoostingRegressor()

        # fit and save model with training score
        model.fit(df_trainX, df_trainY)
        self.save(model)  # persist/cache model
        self.saveMeta({'score': model.score(df_trainX, df_trainY)})  # save model score

# goal: compare performance of two models
# define workflow manager
flow = oryxflow.WorkflowMulti(ModelTrain, {'model1':{'model':'ols'}, 'model2':{'model':'gbm'}})
flow.reset_upstream(confirm=False) # DEMO ONLY: force re-run
flow.run()  # execute model training including all dependencies

'''
Scheduled 2 tasks
* 2 ran successfully
* 0 complete
* 0 failed
'''

scores = flow.outputLoadMeta()  # load model scores
print(scores)
# {'model1': {'score': 0.7406426641094095}, 'gbm': {'model2': 0.9761405838418584}}

Example Library

Documentation

Library usage and reference https://oryxflow.readthedocs.io

Getting started resources

Transition to oryxflow from typical scripts

5 Step Guide to Scalable Deep Learning Pipelines with oryxflow

Data science project starter templates

Sharing data

By default data gets written to data/ which is gitignored to avoid writing large files to source control.

To source control you can use git lfs to dvc.

Git lfs

  1. Install the LFS extension (once per machine)
  winget install GitHub.GitLFS   # or: choco install git-lfs
  git lfs install                 # hooks LFS into your git config
  1. adjust .gitignore to track data/ and reports/render

  2. Tell LFS which files to track

git lfs track "data/**"
git lfs track "reports/render/**"
git lfs track "*.ipynb"
  1. commit .gitattributes and .gitignore

Pro version

Additional features:

  • Team sharing of workflows and data
  • Integrations for datbase and cloud storage (SQL, S3)
  • Integrations for distributed compute (dask, pyspark)
  • Integrations for cloud execution (athena)
  • Workflow deployment and scheduling

Schedule demo

Accelerate Data Science

Check out other d6t libraries, including

  • import data: quickly ingest messy raw CSV and XLS files to pandas, SQL and more
  • join data: quickly combine multiple datasets using fuzzy joins

https://github.com/d6t/d6t-python

How To Contribute

Thank you for considering to contribute to the project. First, fork the code repository and then pick an issue that is open. Afterwards follow these steps

  • Create a branch called [issue_no]_yyyymmdd_[feature]
  • Implement the feature
  • Write unit tests for the desired behaviour
  • Create a pull request to merge branch with master

A similar workflow applies to bug-fixes as well. In the case of a fix, just change the feature name with the bug-fix name. And make sure the code passes already written unit tests.

Release files for oryxflow 26.7.21

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

Source distribution (sdist)

Source distribution for oryxflow 26.7.21
File Size Uploaded
oryxflow-26.7.21.tar.gz 99.7 kB Details

Built distribution (wheel)

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

Total release size:170.5 kB

Release files / oryxflow-26.7.21.tar.gz

Download URL oryxflow-26.7.21.tar.gz
Size 99.7 kB
Tags Source
SHA-256 checksum
How to use checksums
92d5dd4e0bbac5996ea89502092d5308af0ef61dc20ab2b244aaf1209906405c
BLAKE2b-256 checksum
How to use checksums
aae64e363f33fc80d6a19817bb0c1dc5410e75d543d59de0bcf946da8cc85ab4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 22, 2026.

Transparency log

Release files / oryxflow-26.7.21-py3-none-any.whl

Download URL oryxflow-26.7.21-py3-none-any.whl
Size 70.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e523b28856e4446607913afad906413bc2acb1f10fceed00b7ba5021880c3a15
BLAKE2b-256 checksum
How to use checksums
4e624d05326519663ad37b57f2a86e487e4d2e341312356d7ed141de9c27c0ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 22, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

26.7.21 This release

2 release files

26.6.6

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