3.2 — Incremental runs
Tasks can now declare a watermark, so a rerun only processes what changed. Plus a 40% faster graph resolver.
MIT licensed · v3.2 · Python 3.10+
Halyard is a small set of packages for defining, testing, and scheduling pipelines as plain Python functions. No DSL, no scheduler lock-in, no YAML pyramid.
Install in 30 secondshalyard-core
stablev3.2.1 · 1.2 MB
Task graph, typed inputs and outputs, retries, and the local runner. The only package most projects need.
halyard-io
stablev3.2.1 · 640 kB
Readers and writers for Parquet, Postgres, S3, BigQuery, and Delta, all sharing one connection abstraction.
halyard-test
stablev3.1.4 · 210 kB
Golden-file fixtures and a fake clock so a pipeline test runs in milliseconds without touching a warehouse.
halyard-scheduler
betav0.9.0 · 780 kB
A single-binary scheduler with cron and event triggers. Optional — Airflow and Dagster adapters ship too.
halyard-viz
experimentalv0.4.2 · 1.8 MB
Renders a pipeline graph to SVG or a local web view, with run history overlaid on each node.
From an empty directory to a running pipeline.
pip install halyard-core halyard-io — no compiler, no system dependencies, wheels for Linux, macOS, and Windows.
Decorate a plain function with @task. Type hints become the contract; Halyard checks them before anything runs.
Call tasks from a @pipeline function. The graph is inferred from the calls — there is nothing else to declare.
halyard run daily_sales runs it locally; pytest with halyard-test runs the same graph against fixtures in under a second.
GitHub stars
Contributors
Monthly downloads
Median days to first review
Halyard is volunteer-run. Three of us are funded part-time by the Open Data Fund.
Sanne de Vries
Lead maintainer · Utrecht
Wrote the original task graph in 2021. Reviews most core PRs.
Lucas Amorim
halyard-io · São Paulo
Owns the connector layer and the compatibility matrix.
Wei Tan
Docs & scheduler · Singapore
Writes the guides and is slowly getting the scheduler to 1.0.
Tasks can now declare a watermark, so a rerun only processes what changed. Plus a 40% faster graph resolver.
halyard-io connections are now typed and pooled per pipeline run, which fixes the long-standing Postgres leak on retries.
The declarative config layer is gone. Pipelines are Python functions and nothing else. Migration guide included.
Issues tagged "good first issue" are kept stocked and each one names a maintainer who will review it. Say hello in the issue before you start so nobody duplicates work.
Median six days. If a pull request has had no reply after two weeks, ping the weekly triage thread and we will pick it up.
Yes, into halyard-io, provided the connector has an integration test that runs against a container and a named person willing to maintain it.
Open Data Fund grants and GitHub Sponsors. Nobody is employed by a company that sells a hosted Halyard, and we intend to keep it that way.
Bug reports from real pipelines are worth more to us than stars.
Open an issue