Skip to main content

Flowa — lightweight pipeline orchestration

Project description

flowa

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.


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

Requirements: Python 3.11+


Quick Start

1. Create a pipeline

# pipelines/etl.yaml
name: etl

steps:
  - name: extract
    run: python scripts/extract.py
    retries: 3
    timeout_seconds: 120

  - name: transform
    run: python scripts/transform.py
    depends_on: extract

  - name: load
    run: python scripts/load.py
    depends_on: transform

  - name: notify
    run: python scripts/notify.py
    depends_on: transform
    continue_on_error: true

2. Run it

flowa run pipelines/etl.yaml

3. Open the dashboard

flowa serve
# → http://127.0.0.1:8000

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
  timezone: UTC

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 run <pipeline.yaml>       # run a pipeline manually
flowa start                     # start the scheduler
flowa serve                     # start the API + web UI
flowa history                   # show recent runs
flowa history <pipeline_name>   # filter by pipeline
flowa logs <run_id>             # show steps for a run

flowa serve options

flowa serve --host 0.0.0.0 --port 8080 --reload

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.

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 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/
├── 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.0.tar.gz (20.1 kB 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.0-py3-none-any.whl (17.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: flowa_core-0.1.0.tar.gz
  • Upload date:
  • Size: 20.1 kB
  • 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.0.tar.gz
Algorithm Hash digest
SHA256 b3b0c1c778513e79337f5107f5883bbe1cccad43a24c311952866e8fd3ed55a9
MD5 ed508c106b74667b067b59e3d49cad2d
BLAKE2b-256 cbf3def5bde99e0cd6f2661b581f167ab2190c707b540d2cbe5713ce9a7c6a9a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: flowa_core-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 17.5 kB
  • 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8809585f5c3148eefe65dfaad71dd6d63bc5220cee32fe0b598061bd3e892342
MD5 b08e756215ca16d9707b0ab67c42f974
BLAKE2b-256 3b12cf5f4ef6a25d3ae1d42f8b09c0910fac37bea7bc120b01005c2c7aaa7aef

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