Skip to main content

Airframe

Generate production-ready Airflow DAGs from battle-tested templates.

Airframe is a CLI tool that generates complete, deployable Airflow DAGs from Jinja2 templates — not just code skeletons, but the full working system with connections, retry policies, observability hooks, and optional Terraform infrastructure for self-hosted Airflow on Linode.

Quick Start

pip install xtremedp-airframe

# Initialize a project
airframe init

# Generate a DAG from a template
airframe generate postgres-cdc --dag-id orders_cdc --table orders --schedule "@hourly"

# List available templates
airframe list-templates

# Deploy Airflow infrastructure (requires Terraform + Linode token)
airframe deploy

# Check version and environment
airframe version
airframe info

Commands

airframe init

Scaffolds a new airframe project in the current directory:

  • dags/ — generated DAG files
  • tests/ — DAG tests
  • airframe.yaml — project configuration
  • .gitignore

airframe generate <template>

Generates a DAG file from a template. Reads defaults from airframe.yaml, overrides with CLI flags:

airframe generate postgres-cdc \
  --dag-id orders_cdc \
  --table orders \
  --schedule "@hourly" \
  --batch-size 2000 \
  --source-conn source_postgres \
  --warehouse-conn warehouse_conn

airframe list-templates

Shows available templates with pricing.

airframe deploy

Runs Terraform to deploy self-hosted Airflow on Linode. Requires Terraform installed and Linode API token configured.

airframe version

Prints the installed airframe version.

airframe info

Shows version, Python version, project config (if airframe.yaml exists), and available templates with pricing.

Examples

See the examples/ directory for generated DAGs from every template:

airframe generate data-quality --dag-id dq_validation
airframe generate postgres-cdc --dag-id orders_cdc --table orders
airframe generate api-to-warehouse --dag-id orders_api_sync --endpoint /api/v1/orders

Templates

Template Description Price
data-quality Standalone DQ validation: row count, null, uniqueness, completeness Free
file-batch-ingest S3/file batch ingest → warehouse with upsert + validation $29
postgres-cdc Postgres CDC → warehouse (Centene pattern) $49
api-to-warehouse REST API → warehouse with pagination + upsert $99
multi-source-elt Multi-source ELT: Postgres CDC + API → merge → transform → warehouse $149
dbt-runner dbt transformation pipeline: deps → freshness → run → test → docs $99
More coming soon

Configuration

airframe.yaml stores project defaults:

project_name: my-pipelines
owner: airframe
schedule: "@daily"
start_date: "2025-01-01"
catchup: false
retries: 1
retry_delay_minutes: 5
tags:
  - airframe
output_dir: dags

Development

git clone <repo-url>
cd airframe
uv pip install -e ".[dev]"
pytest

Architecture

src/airframe/
├── cli/main.py          — Typer CLI (init, generate, list-templates, deploy)
├── config.py            — ProjectConfig (Pydantic, airframe.yaml schema)
├── templates/
│   ├── __init__.py      — TemplateConfig, render_template(), template registry
│   ├── data_quality.py.j2 — Standalone DQ validation template (Free)
│   ├── file_batch_ingest.py.j2  — S3 batch ingest template ($29)
│   ├── postgres_cdc.py.j2  — Postgres CDC DAG template ($49)
│   ├── api_to_warehouse.py.j2  — REST API → warehouse template ($99)
│   ├── multi_source_elt.py.j2  — Multi-source ELT template ($149)
│   └── dag_test.py.j2   — Generated DAG test template
terraform/airflow/
├── main.tf              — Linode instance, firewall, DNS
├── variables.tf         — Configurable inputs
├── outputs.tf           — Airflow URL, IP, SSH command
└── install.sh           — StackScript provisioning

License

The CLI and free data-quality template are MIT-licensed. Paid template packs are sold separately under a commercial license — see MARKETING.md for purchasing.

Download files

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

Source Distribution

xtremedp_airframe-0.1.0.tar.gz (24.4 kB view details)

Uploaded Source

Built Distribution

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

xtremedp_airframe-0.1.0-py3-none-any.whl (33.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: xtremedp_airframe-0.1.0.tar.gz
  • Upload date:
  • Size: 24.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for xtremedp_airframe-0.1.0.tar.gz
Algorithm Hash digest
SHA256 5b2e65868127254483f93e48867eee8c8d4f4e61ab9dbe4051d6477a86f3229f
MD5 69d6875b1a9ae4c314758e7aff026c85
BLAKE2b-256 e9280f444afe9baab409fa8fc3df3d957bfb50e21b0b4e847ccfdf91fe01589a

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtremedp_airframe-0.1.0.tar.gz:

Publisher: ci.yml on ochsec/airframe

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

File details

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

File metadata

File hashes

Hashes for xtremedp_airframe-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b95957b807592de9bbae09c1771de19947e65fd027c8359e569dc223062fb06f
MD5 b3d33443764b174dc87a4e2db8f1affc
BLAKE2b-256 162f1130511e079e8ff6d933683b20a47aa3e54a24263933fcbdd0b5f87da8b6

See more details on using hashes here.

Provenance

The following attestation bundles were made for xtremedp_airframe-0.1.0-py3-none-any.whl:

Publisher: ci.yml on ochsec/airframe

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