Design & Code Airflow DAGs Visually

DagSmith is an Apache Airflow ≥ 3.1 plugin that adds a full visual, block-based DAG editor to the Airflow web UI — with a direct code editor alongside it. Build, edit and deploy pipelines without leaving Airflow, without giving up your hand-written Python.

Quick StartExplore Docs
pip install airflow-dagsmith

See it in action

Visual Editor

Drag operators from a searchable palette onto a canvas, connect them with dependency edges — tasks and TaskGroups alike — and configure parameters in typed forms: key:value editors for dicts, a rich-text editor for HTML fields, connection pickers for conn_ids, a cron builder for schedules.

Code Editor

Edit the .py files directly in CodeMirror with syntax and import validation before anything is deployed.

Code Is the Source of Truth

Canvas edits are applied as minimal, surgical changes via libcst — comments and formatting you didn’t touch stay byte-for-byte identical. Dynamic constructs (loops, .expand()) show up as code-only blocks instead of breaking the parser.

Auto-Generated Palette

Installed provider packages are introspected — operators, sensors, their __init__ signatures across the class hierarchy — so hundreds of blocks with typed parameter forms appear with zero manual definitions.

Draft → Deploy

Work-in-progress is saved as versioned drafts in the Airflow metadata database, with autosave, history, diffs and restore. The live .py file changes only when you hit Deploy — validated, backed up, conflict-checked. The scheduler never sees half-finished work.

Teams & Git

Give each team a directory in a DAG bundle and a git repository: members-only editing, per-DAG reassignment by admins, team-tagged DAGs, and a Commit & Push button for GitHub or GitLab, with optional push-on-deploy.

🔒 Safety by default

Deploy is disabled until explicitly enabled. Every endpoint is authorized through the Airflow Auth Manager. User DAG code is only ever executed in an isolated, time-limited subprocess — never in the api-server process. Every file path is confined to the bundle root, and every deploy is audit-logged.

☕ Made in spare time

DagSmith is a solo side project — built and maintained in evenings and weekends, alongside a day job. If it's saving you time, or you just enjoy how it's put together, buying a coffee is the best way to tell me it's worth keeping going: more features, better docs, faster fixes.

☕ Buy me a coffee