Skip to content

airflow

Version 2026.144.1443
Repo superproject

Apache Airflow runs single-node (LocalExecutor + SQLite) from charly-installed wrapper scripts, serving an authenticated REST API on :8080. The airflow candy installs four /usr/local/bin wrapper scripts that drive Airflow 3.x under supervisord: airflow-init.sh (one-shot db migrate + binds the SimpleAuthManager admin password to the injected AIRFLOW_ADMIN_PASSWORD secret) plus airflow-webserver.sh (api-server), airflow-scheduler.sh, and airflow-dag-processor.sh. At deploy the three daemons serve the REST API on :8080; notebooks self-author DAGs into AIRFLOW__CORE__DAGS_FOLDER at runtime. The verifiable artifacts are the wrapper scripts (build scope) and the live REST API + JWT issuance (deploy scope).

  • airflow-init
  • airflow-scheduler
  • airflow-dag-processor
  • airflow-webserver

This candy’s plan: — the runnable spec charly check executes against a live deployment. check: steps are idempotent probes; run: steps change state.

Intent Step
run mkdir=${HOME}/airflow
run mkdir=${HOME}/airflow/dags
run mkdir=${HOME}/airflow/logs
run mkdir=${HOME}/airflow/plugins
run write=/usr/local/bin/airflow-init.sh
run write=/usr/local/bin/airflow-webserver.sh
run write=/usr/local/bin/airflow-scheduler.sh
run write=/usr/local/bin/airflow-dag-processor.sh
check the one-shot init wrapper is installed and executable
check the api-server wrapper is installed and executable
check the scheduler wrapper is installed and executable
check the dag-processor wrapper is installed and executable
check the running api-server answers /api/v2/version with HTTP 200
check posting the injected admin credentials to /auth/token returns a bearer access_token
check command=test -f ${HOME}/airflow/airflow.db
check service=airflow-scheduler
check service=airflow-dag-processor
check service=airflow-webserver
check addr=127.0.0.1:${HOST_PORT:8080}