metaflow-mage
Run any Metaflow flow as a Mage pipeline without rewriting your steps.
The problem
Mage is a modern data pipeline tool with a rich UI and flexible block model, but it has no native support for Metaflow's step graph, artifact store, or retry semantics. Teams that want Mage's notebook-style visibility must either re-implement their Metaflow flows as Mage blocks from scratch or give up Metaflow's lineage, versioning, and @retry behavior. There is no ready-made compiler that maps a Metaflow DAG to Mage blocks while keeping the full Metaflow runtime intact.
Quick start
pip install metaflow-mage
python flow.py mage create --mage-host http://localhost:6789
python flow.py mage trigger --mage-host http://localhost:6789
# Compiling HelloFlow to Mage pipeline...
# Pipeline hello_flow deployed successfully.
# Pipeline run started: http://localhost:6789/pipelines/hello_flow/runs/1
Install
pip install metaflow-mage
From source:
git clone https://github.com/npow/metaflow-mage
cd metaflow-mage
pip install -e .
Usage
Deploy and run in one step:
python flow.py mage run \
--mage-host http://localhost:6789 \
--mage-project metaflow_project
# Compiling HelloFlow to Mage pipeline...
# Pipeline hello_flow deployed successfully.
# Triggering pipeline run...
# Pipeline run started: http://localhost:6789/pipelines/hello_flow/runs/1
# Pipeline run is running...
# Pipeline run 1 completed successfully.
Deploy once, trigger many times with parameters:
python flow.py mage create --mage-host http://localhost:6789
python flow.py mage trigger --mage-host http://localhost:6789 \
--run-param message=hello --run-param n=10
Programmatic API:
from metaflow import Deployer
with Deployer("flow.py") as d:
df = d.mage().create(
mage_host="http://localhost:6789",
mage_project="metaflow_project",
)
run = df.trigger(message="hello")
print(run.status) # RUNNING / SUCCEEDED / FAILED
print(run.mage_ui) # http://localhost:6789/pipelines/hello_flow/runs/1
print(run.run.successful) # True
Delete a deployed pipeline:
python flow.py mage delete --mage-host http://localhost:6789
# Pipeline hello_flow deleted from Mage.
How it works
Each Metaflow step becomes a Mage Python block. An init block runs first to allocate the Metaflow run ID; subsequent blocks call python flow.py step <step_name> with --run-id, --task-id, and --retry-count threaded through as block outputs. Foreach steps emit a foreach_init block that enumerates items and fans out to per-item body blocks. A Mage API trigger (pipeline schedule) is created or reused on every create, so trigger works immediately without manual Mage UI setup.
Supported graph patterns: linear, branch/join, foreach. @parallel is not supported.
Configuration
| CLI option | Environment variable | Default | Description |
|---|---|---|---|
--mage-host |
MAGE_HOST |
http://localhost:6789 |
Mage server base URL |
--mage-project |
MAGE_PROJECT |
metaflow_project |
Mage project name |
--max-workers |
— | 10 |
Max concurrent block runs |
--branch |
— | — | @project branch name |
--production |
— | false |
Deploy to the production project branch |
--name |
— | derived from class name | Override the Mage pipeline UUID |
Development
git clone https://github.com/npow/metaflow-mage
cd metaflow-mage
pip install -e ".[dev]"
pytest tests/
Integration tests require a running Mage instance:
docker run -it -p 6789:6789 mageai/mageai mage start metaflow_project
pytest tests/ -m integration
License
Apache 2.0. See LICENSE.
Metadata
Release files for metaflow-mage 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| metaflow_mage-0.2.1.tar.gz | 24.1 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| metaflow_mage-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 48.4 kB
Release files / metaflow_mage-0.2.1.tar.gz
| Download URL | metaflow_mage-0.2.1.tar.gz |
|---|---|
| Size | 24.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c64dc9c598ba68510a19cd93a2752ea0d7338e4c7136f082c70801b326204452
|
|
BLAKE2b-256 checksum How to use checksums |
d090cfef25b66f495b11d940552150254e5c30f34c5d3ebc1b2593d01cc874c8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Mar 12, 2026.
Transparency logRelease files / metaflow_mage-0.2.1-py3-none-any.whl
| Download URL | metaflow_mage-0.2.1-py3-none-any.whl |
|---|---|
| Size | 24.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
eb95cf499d02e1a35d030c50c9777cb880a6b8e2b1a955bbd44f5ff7b9dfa86d
|
|
BLAKE2b-256 checksum How to use checksums |
afa8a126845b54788f781f9c9d13ca83632d779e22a66712b042966200072cca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Mar 12, 2026.
Transparency logSecurity for metaflow-mage 0.2.1
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.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for metaflow_mage-0.2.1.tar.gz
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 Mar 12, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.