Skip to main content

Airflow connector for Floe CLI (manifest-first orchestration)

Project description

Floe + Airflow (MVP example)

This folder contains:

  • a reusable Python connector package (src/airflow_floe)
  • example DAGs (dags/) that consume the package

For local setup of both Dagster and Airflow with isolated virtual environments, see:

  • orchestrators/LOCAL_DEV.md

Contents

  • INTEGRATION_SPEC.md: contract between Airflow and Floe CLI
  • schemas/: JSON Schemas for XCom payloads and manifest contract
  • src/airflow_floe/manifest.py: manifest loader/converter (legacy floe.plan.v1 -> floe.manifest.v1)
  • src/airflow_floe/runtime.py: shared runtime helpers (manifest context, run event parsing, summary loading)
  • src/airflow_floe/hooks.py: reusable manifest hook (FloeManifestHook)
  • src/airflow_floe/operators.py: reusable run hook/operator (FloeRunHook, FloeRunOperator)
  • example/config.yml: small Floe config for demo
  • dags/floe_example_operator_dag.py: example DAG using FloeRunOperator

Quick usage

  1. Make sure floe is available in PATH (or set FLOE_CMD).
  2. (Optional but recommended) install the connector package:
python -m pip install -e orchestrators/airflow-floe
  1. Point Airflow DAGs folder to orchestrators/airflow-floe/dags.
  2. Set optional env vars:
export FLOE_CMD="floe"
export FLOE_MANIFEST="/absolute/path/to/orchestrators/airflow-floe/example/manifest.airflow.json"
# optional multi-manifest mode (1 manifest => 1 DAG):
# export FLOE_MANIFEST_DIR="/absolute/path/to/orchestrators/airflow-floe/example/manifests"
# optional override:
# export FLOE_CONFIG="/absolute/path/to/orchestrators/airflow-floe/example/config.yml"
  1. Generate manifest from Floe config:
floe manifest generate \
  -c orchestrators/airflow-floe/example/config.yml \
  --output orchestrators/airflow-floe/example/manifest.airflow.json

For multi-manifest mode (one DAG per manifest), generate domain manifests:

floe manifest generate \
  -c orchestrators/airflow-floe/example/config.hr.yml \
  --output orchestrators/airflow-floe/example/manifests/hr.manifest.json

floe manifest generate \
  -c orchestrators/airflow-floe/example/config.sales.yml \
  --output orchestrators/airflow-floe/example/manifests/sales.manifest.json
  1. Trigger DAG floe_example_operator.
    • In multi-manifest mode (FLOE_MANIFEST_DIR), DAGs are generated as floe_<manifest_name>.

Notes

  • The DAG uses Floe CLI contracts directly and expects:
    • run log schema: floe.log.v1
    • terminal event: run_finished
  • Assets are created at parse time from FLOE_MANIFEST and materialized when run tasks finish.
  • floe_example_operator also publishes asset events when manifest assets are available.
  • If FLOE_MANIFEST is missing/invalid, DAGs still run with FLOE_CONFIG (or example config fallback) but no assets are loaded/materialized.
  • The returned task payload shape follows floe.airflow.run.v1.
  • Local run summaries emitted as local://... are resolved and loaded by the connector runtime helpers.
  • Floe NDJSON stdout/stderr are streamed into task logs (Audit/Task Log view) and still parsed for run_finished.

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

airflow_floe-0.1.2.tar.gz (17.4 kB view details)

Uploaded Source

Built Distribution

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

airflow_floe-0.1.2-py3-none-any.whl (13.5 kB view details)

Uploaded Python 3

File details

Details for the file airflow_floe-0.1.2.tar.gz.

File metadata

  • Download URL: airflow_floe-0.1.2.tar.gz
  • Upload date:
  • Size: 17.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for airflow_floe-0.1.2.tar.gz
Algorithm Hash digest
SHA256 687614c8d82bad8a1d6d594426599e2eafabf038e845252fb4939ffe7e683320
MD5 88584b703f04820b1aee833f69b50aa0
BLAKE2b-256 ea8cc98e6f61afd7300aa2203e180c92a48898ea67347dddbed5bcbde0fcb406

See more details on using hashes here.

Provenance

The following attestation bundles were made for airflow_floe-0.1.2.tar.gz:

Publisher: release-airflow-floe.yml on malon64/floe

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file airflow_floe-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: airflow_floe-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 13.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for airflow_floe-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c9136ae90962450aef4b8cb21f8639aa34386737c489d60ff26759fe9141bfbf
MD5 39739636102bc4c74223b46898bf6a81
BLAKE2b-256 cb2a95902fafc696e2d34c2f37338d26552bd7d6da0de0eb683d1a86f9b80af7

See more details on using hashes here.

Provenance

The following attestation bundles were made for airflow_floe-0.1.2-py3-none-any.whl:

Publisher: release-airflow-floe.yml on malon64/floe

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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