Airflow Schedule Insights is an Apache Airflow 3.1 plugin that visualizes how DAG schedules are distributed across the day and helps teams identify quieter scheduling windows.
It acts as a schedule observability dashboard and a first step toward a Smart Scheduling Assistant for Airflow.
- Schedule Heatmap
- Weekday × hour distribution of projected DAG runs
- Scheduler Load Curve
- Understand hourly scheduler pressure
-
Daily Scheduler Load
-
Planning Window Selector
The plugin analyzes DAG schedules and projects their future execution windows.
- Load DAG definitions using
DagBag - Read each DAG's timetable
- Project future DAG runs for a selected window (7/14/30 days)
- Aggregate runs into:
- weekday × hour heatmap
- hourly load totals
- Identify:
- peak hours
- free hours
- recommended low‑load windows
The backend exposes a JSON API consumed by the dashboard.
Below is the high-level architecture of Airflow Schedule Insights.
flowchart LR
subgraph Airflow["Apache Airflow 3.x"]
NAV["Sidebar Navigation<br/>Schedule Insights"]
PLUGIN["Airflow Plugin"]
DAGBAG["DagBag<br/>Load DAG Definitions"]
TIMETABLE["Airflow Timetables<br/>Schedule Logic"]
end
subgraph Backend["Plugin Backend (FastAPI)"]
API["API Endpoint<br/>/smart-scheduling/heatmap"]
SERVICE["Schedule Service"]
PROJECTION["Run Projection Engine"]
AGG["Aggregation Layer"]
end
subgraph Frontend["React Dashboard"]
UI["Schedule Insights UI"]
HEATMAP["Schedule Heatmap"]
CURVE["Scheduler Load Curve"]
HIST["Hourly Distribution"]
WINDOWS["Daily Scheduler Load<br/>Free Windows"]
end
NAV --> UI
UI -->|REST API| API
API --> SERVICE
SERVICE --> DAGBAG
SERVICE --> TIMETABLE
DAGBAG --> PROJECTION
TIMETABLE --> PROJECTION
PROJECTION --> AGG
AGG --> HEATMAP
AGG --> CURVE
AGG --> HIST
AGG --> WINDOWS
airflow_schedule_heatmap_plugin/
│
├── airflow_plugin.py
├── api.py
├── schedule_service.py
├── README.md
│
└── dist/
├── index.html
└── assets/
dist/ contains the compiled React frontend.
Currently the plugin is installed by copying it into the Airflow plugins directory.
Example:
cp -R airflow_schedule_heatmap_plugin /opt/airflow/plugins/
Restart Airflow after copying.
docker compose restart
Then open:
http://localhost:8080/smart-scheduling/ui/
The dashboard is a standalone React app.
npm install
npm run dev
Set the correct base path in vite.config.js:
base: "/smart-scheduling/ui/"npm run build
Copy build output into the plugin:
cp -R dist/* /opt/airflow/plugins/airflow_schedule_heatmap_plugin/dist/
Restart Airflow afterwards.
Main logic lives in:
schedule_service.py
Typical changes:
- modify schedule projection
- add new metrics
- improve recommendation logic
- add team/tag filters
API routes are defined in:
api.py
Typical workflow using your Makefile.
make airflow-build
make airflow-init
make airflow-up
make airflow-logs
make airflow-restart
Test backend API directly:
http://localhost:8080/smart-scheduling/heatmap?days=14
Expected response:
{
"window_days": 14,
"total_dags": 301,
"projected_runs": 5078,
"heatmap": []
}Open the dashboard:
http://localhost:8080/smart-scheduling/ui/
Ensure frontend build exists in:
dist/index.html
dist/assets/
Fix Vite base path:
base: "/smart-scheduling/ui/"
Rebuild frontend.
Restart Airflow after:
- Python changes
- copying frontend files
Possible improvements:
- tag / team filters
- schedule collision detection
- cron schedule suggestions
- scheduler pressure score
- AI generated schedule insights
Airflow Schedule Insights helps data platform teams understand scheduler load and place new DAGs intelligently.
It provides visibility into:
- schedule clustering
- peak scheduler hours
- low‑load scheduling windows
and acts as the foundation for a future Airflow Smart Scheduling Assistant.






