airflow-provider-skaledata
SkaleData's Airflow extensions. Pre-installed in
ghcr.io/skaledata/airflow — if
you're using the SkaleData base image you don't need to do anything.
If you're running your own Airflow image:
pip install airflow-provider-skaledata
The PyPI distribution is airflow-provider-skaledata (matches the Apache
community-provider naming convention). Imports live under the
skale.providers.* namespace.
Namespace
Mirrors Airflow's own provider layout
(airflow.providers.<name>.{hooks,operators,triggers}.<name>) under
skale.providers.*:
from skale.providers.airbyte.hooks.airbyte import AirbyteHook
from skale.providers.airbyte.operators.airbyte import AirbyteTriggerSyncOperator
from skale.providers.airbyte.sensors.airbyte import AirbyteJobSensor
from skale.providers.airbyte.triggers.airbyte import AirbyteSyncTrigger
Subsequent SkaleData providers (skale.providers.<other>...) slot in here.
What's in it today
skale.providers.airbyte — bearer-auth shim for managed Airbyte
Drop-in replacements for the upstream Airbyte provider's hook, operator,
sensor, and trigger that authenticate via a static bearer token (your SkaleData sdk_* API
key) instead of the upstream OAuth2 /applications/token flow.
SkaleData ships its managed Airbyte with global.auth.enabled: false. The Caddy
ingress in front of Airbyte validates the API key at the edge, so the standard
apache-airflow-providers-airbyte connector — which only supports OAuth2 client
credentials or no-auth — can't talk to it.
Airflow connection setup
| Field | Value |
|---|---|
| Conn Type | Airbyte |
| Host | https://<cluster>.skaledata.run/api/public/v1/ |
| Password (client secret) | sdk_... (your SkaleData API key) |
| Login / Token URL | leave blank |
DAG usage
from datetime import datetime
from airflow.decorators import dag
from skale.providers.airbyte.operators.airbyte import AirbyteTriggerSyncOperator
@dag(start_date=datetime(2026, 1, 1), schedule=None, catchup=False)
def run_airbyte_sync():
AirbyteTriggerSyncOperator(
task_id="sync_postgres_to_warehouse",
airbyte_conn_id="airbyte_default",
connection_id="<your-airbyte-connection-uuid>",
deferrable=True,
)
run_airbyte_sync()
AirbyteTriggerSyncOperator is a drop-in for the upstream
AirbyteTriggerSyncOperator — same arguments, same async/deferrable semantics.
Asynchronous (idempotent) usage
With asynchronous=True the operator returns the Airbyte job id immediately
and AirbyteJobSensor waits on it as a separate task. Because the submit and
the wait are split, a sensor retry re-checks the existing job instead of
kicking off a duplicate sync — mirroring the
upstream async example:
from datetime import datetime
from airflow.decorators import dag
from skale.providers.airbyte.operators.airbyte import AirbyteTriggerSyncOperator
from skale.providers.airbyte.sensors.airbyte import AirbyteJobSensor
@dag(start_date=datetime(2026, 1, 1), schedule=None, catchup=False)
def run_airbyte_sync_async():
trigger_sync = AirbyteTriggerSyncOperator(
task_id="trigger_airbyte_sync",
airbyte_conn_id="airbyte_default",
connection_id="<your-airbyte-connection-uuid>",
asynchronous=True,
)
wait_for_sync = AirbyteJobSensor(
task_id="wait_for_airbyte_sync",
airbyte_conn_id="airbyte_default",
airbyte_job_id=trigger_sync.output,
deferrable=True,
)
trigger_sync >> wait_for_sync
run_airbyte_sync_async()
AirbyteJobSensor supports both poke mode (default) and deferrable=True,
same as upstream.
Metadata
Release files for airflow-provider-skaledata 0.7.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| airflow_provider_skaledata-0.7.0.tar.gz | 19.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| airflow_provider_skaledata-0.7.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 35.0 kB
Release files / airflow_provider_skaledata-0.7.0.tar.gz
| Download URL | airflow_provider_skaledata-0.7.0.tar.gz |
|---|---|
| Size | 19.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
10a385675919965cfbcd299efba5ee7ce07689d21fc7621f0c85866001f81db6
|
|
BLAKE2b-256 checksum How to use checksums |
f6b84eb340bfce28a61ba99cb7ef6d53b74d02b83ae6cfc7c383a9b9482339dd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.
Transparency logRelease files / airflow_provider_skaledata-0.7.0-py3-none-any.whl
| Download URL | airflow_provider_skaledata-0.7.0-py3-none-any.whl |
|---|---|
| Size | 15.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f14117c1b704fb3d6cb7614784d3a9df07ba9b3c8b02273c12501e8cd3004845
|
|
BLAKE2b-256 checksum How to use checksums |
ac8bd2733337055acb93794c0094de14298eab87524eaf67af4f461cc5e38ef1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.
Transparency log