Skip to main content

Flowa — lightweight pipeline orchestration

Project description

flowa_banner

A lightweight pipeline orchestration tool inspired by Apache Airflow. Define workflows in YAML, run them from the CLI, schedule them with cron, and monitor everything through a REST API and web UI.

flowa_div

Features

  • DAG-based execution — topological sort with cycle detection
  • Parallel steps — independent steps run concurrently via thread pool
  • Retry & timeout — configurable per step
  • Continue on error — mark steps as non-blocking for their dependents
  • Cron scheduling — schedule pipelines by day/time/interval
  • SQLite history — every run and step is recorded automatically
  • REST API — trigger pipelines and query history programmatically
  • Web UI — built-in dashboard to manage and monitor pipelines

Installation

pip install flowa-core

After install, a flowa_pipelines/ directory with a ready-to-use etl.yaml template is created automatically in your project folder.

Requirements: Python 3.11+


Getting Started

New to flowa? Follow these 4 steps and you'll have a pipeline running in minutes.

Step 1 — Install

pip install flowa-core

Step 2 — Initialize your project

flowa init

This creates flowa_pipelines/etl.yaml — a pre-configured ETL template with extract, transform, and load steps. Edit it to match your scripts.

Step 3 — Run a pipeline manually

flowa run flowa_pipelines/etl.yaml

Step 4 — Start the server

flowa server
# → API + scheduler running at http://127.0.0.1:8000

That's it. Open http://127.0.0.1:8000 to see the dashboard, monitor runs, and trigger pipelines.


Pipeline YAML Reference

name: my_pipeline          # required
max_parallel: 4            # max concurrent steps (default: 4)

schedule:                  # optional
  days: All Days           # All Days | Mon,Tue,Wed,Thu,Fri | ["Mon", "Fri"]
  start: "09:00"
  end:   "18:00"
  interval_minutes: 60

steps:
  - name: step_name        # required, must be unique
    run: command to run    # required, executed in shell
    depends_on: other_step # optional — string or list
    retries: 0             # optional, default 0
    timeout_seconds: 60    # optional, no limit by default
    continue_on_error: false  # optional, default false

depends_on

Accepts a single step name or a list:

depends_on: extract
# or
depends_on: [extract, validate]

Step status values

Status Description
SUCCESS Step completed with exit code 0
FAILED Step failed after all retries
FAILED (ignored) Step failed but continue_on_error: true
SKIPPED Step skipped because a dependency hard-failed

CLI Reference

flowa init                          # create flowa_pipelines/ and etl.yaml template
flowa run <pipeline.yaml>           # run a pipeline manually
flowa start                         # start only the scheduler (blocking)
flowa server                        # start API + web UI + scheduler
flowa history                       # show recent runs
flowa history <pipeline_name>       # filter by pipeline
flowa logs <run_id>                 # show steps for a run

flowa server vs flowa start

Command What it does
flowa server Starts the API, web UI, and the scheduler — the recommended way to run flowa
flowa start Starts only the scheduler, no API or UI
flowa server --no-scheduler Starts only the API and UI, without scheduling

flowa server options

flowa server --host 0.0.0.0 --port 8080
flowa server --no-scheduler

REST API

Method Endpoint Description
GET /pipelines List available pipelines
POST /pipelines/{name}/run Trigger a pipeline (async)
GET /runs Execution history
GET /runs/{id} Run detail with steps
GET /runs/{id}/steps/{step}/logs Step log content
GET /health Health check

Interactive docs available at http://localhost:8000/docs.

image image image image

Trigger a pipeline:

curl -X POST http://localhost:8000/pipelines/etl/run
# {"run_id": 42, "status": "RUNNING", ...}

Check run status:

curl http://localhost:8000/runs/42

Configuration

All settings are controlled via environment variables:

Variable Default Description
FLOWA_PIPELINES_DIR flowa_pipelines Directory scanned by the scheduler
FLOWA_LOGS_DIR logs Where step log files are written
FLOWA_DB_PATH flowa.db SQLite database file path
FLOWA_LOG_LEVEL INFO Log level (DEBUG, INFO, WARNING, ERROR)

Project Layout

A typical project using flowa:

my-project/
├── flowa_pipelines/
│   ├── etl.yaml
│   └── reporting.yaml
├── scripts/
│   ├── extract.py
│   ├── transform.py
│   └── load.py
├── logs/           ← created automatically
└── flowa.db        ← created automatically

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flowa_core-0.1.4.tar.gz (1.4 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

flowa_core-0.1.4-py3-none-any.whl (1.4 MB view details)

Uploaded Python 3

File details

Details for the file flowa_core-0.1.4.tar.gz.

File metadata

  • Download URL: flowa_core-0.1.4.tar.gz
  • Upload date:
  • Size: 1.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for flowa_core-0.1.4.tar.gz
Algorithm Hash digest
SHA256 def2a8bbcc674f28223b565fdcf95ca60d2fda9386d735c4a5e9400398da28e0
MD5 9885b5542c686ccbd127d84f168393d4
BLAKE2b-256 c937357e0fdef18a2346767652596ca875b569a0e87ea7a7c5d4c6a57229e4dc

See more details on using hashes here.

File details

Details for the file flowa_core-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: flowa_core-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for flowa_core-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 204af92ed5e076170ce8c1dff0cd5475c8464996deabbad8417a5715b2b066c6
MD5 a53b83071691e6eb19bafab52f4344e6
BLAKE2b-256 7edbabcc955090829db46be6e20233c569b5d78bc0bcc4adc8e819a929f65989

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page