Mage (github.com/mage-ai/mage-ai (https://github.com/mage-ai/mage-ai 8,829 )) builds a pipeline from blocks, cells in a notebook-like web editor (port 6789) that each hold Python, SQL or R and show their output as you write them. A block's role comes from its decorator (@data_loader, @transformer, @data_exporter), and returned data frames flow to the next block. A transformer block for BookNest, as Mage's template writes it (not run here):
if 'transformer' not in globals():
from mage_ai.data_preparation.decorators import transformer
@transformer
def drop_cancelled(orders, *args, **kwargs):
return orders[orders['status'] != 'cancelled']Mage runs with docker run -p 6789:6789 mageai/mageai or pip 21,050 install mage-ai and has schedules, dbt 37,942 blocks and streaming pipelines. Two cautions: blocks pass whole data frames through the Mage process, and the open-source project's release pace has slowed (no release since 0.9.79 in January 2026) while the company's attention is on the commercial Mage Pro.