Skip to main content

Workflow operations engine (flow/job/step) with state, resume, cleanup and plugins.

Project description

aetherflow-core

GitHub Repo TestPyPI Version PyPI Version

aetherflow-core is a YAML-first workflow engine for ops-style ETL/ELT/automation: run-once jobs you can schedule anywhere (cron, Kubernetes, Airflow, Nomad, systemd, etc.).

It focuses on being:

  • Deterministic: given the same inputs, do the same thing
  • Composable: Flow → Job → Step, with clear boundaries
  • Safe by default: retries, timeouts, idempotency helpers, structured results
  • Extensible: add custom steps/connectors via a stable public API

This distribution ships the CLI aetherflow.


Install

pip install aetherflow-core[all]

Minimal install (if you want to control optional deps yourself):

pip install aetherflow-core

Python: 3.10+.


Quickstart (run a flow)

Create a file flow.yaml:

version: 1

flows:
  hello_flow:
    jobs:
      main:
        steps:
          - id: hello
            type: external.process
            command: ["python", "-c", "print('hello from aetherflow')"]

Run it:

aetherflow run --flow-yaml flow.yaml --flow-job main

Tip: the built-in step type is external.process (not external_process).


Concepts (how to think about it)

  • Flow: top-level unit (a collection of jobs)
  • Job: a run-once unit of work (a list or graph of steps)
  • Step: one action (shell/process, connector ops, custom plugin step, etc.)
  • Resources: named configs used by steps/connectors (e.g., DB connection profiles)
  • State / resume: persistent run state for reliability (if enabled/configured)
  • Locks: prevent overlapping executions when you run in parallel environments

Core stays intentionally run-once. Scheduling is handled by aetherflow-scheduler (separate package).


CLI

aetherflow run --help
aetherflow run --flow-yaml flow.yaml --flow-job main

Full command reference (in this repo):


Public API (for plugins / integrations)

If you are writing plugins or integrating AetherFlow programmatically, only import from:

from aetherflow.core.api import (
    FlowSpec, JobSpec, StepSpec, 
    Step, StepResult,
    register_step, register_connector,
    Settings, RunContext,
)

Everything outside aetherflow.core.api is internal and may change without notice.

Public API and SemVer policy:

  • aetherflow/docs/25-public-api-and-semver.md

Extending AetherFlow

High-level flow:

  1. Implement a Connector, Step subclass (or a compatible callable/factory, depending on your plugin style).
  2. Register it with register_connector(...).
  3. Register it with register_step(...).
  4. Reference it by type: in YAML.

Plugin guide:


YAML spec & guides

Start here:

Built-in catalog:


Docs (in this repository)

Canonical docs live in Aetherflow Doumentation.

Start here:

If you need scheduling, install aetherflow-scheduler.

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

aetherflow_core-0.0.14.tar.gz (115.6 kB view details)

Uploaded Source

Built Distribution

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

aetherflow_core-0.0.14-py3-none-any.whl (108.3 kB view details)

Uploaded Python 3

File details

Details for the file aetherflow_core-0.0.14.tar.gz.

File metadata

  • Download URL: aetherflow_core-0.0.14.tar.gz
  • Upload date:
  • Size: 115.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for aetherflow_core-0.0.14.tar.gz
Algorithm Hash digest
SHA256 9948193b64fa2a40011e74e784ed0c27826b1a2ec387517706518bdcf000ab2b
MD5 d40ed2392a4e12ea5f0921c8e2e9bb7d
BLAKE2b-256 42733a5f9804ac80ac17ddd6390f4b60a7f960a5d614c3707196ea7e48c0a82a

See more details on using hashes here.

File details

Details for the file aetherflow_core-0.0.14-py3-none-any.whl.

File metadata

File hashes

Hashes for aetherflow_core-0.0.14-py3-none-any.whl
Algorithm Hash digest
SHA256 7e90643329bc5025fd52ee007a16835e90a694e06979ee4905ce141a73db182d
MD5 be98139c493db31f7ca84478756785d3
BLAKE2b-256 b53c21202c7158a2f03b3840529ac83058828054b8242110ec35e2c02bf95947

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