Files
airflow/airflow-ctl
Rishabh ab39e95696 Escape error text in airflowctl safe_call_command messages (#76264)
safe_call_command interpolated exception and server error text straight
into Rich markup. A message containing a tag-like fragment such as
"[/x]" made rich.print raise MarkupError, so the user saw a traceback
instead of the real failure and the exit code was no longer 1.

Escape the text in the AirflowCtl, protocol, timeout, server response
and HTTP status handlers.
2026-11-03 17:13:42 +00:00
..
…
…

airflowctl

A command-line tool for interacting with Apache Airflow instances through the Airflow REST API. It offers a convenient interface for performing common operations remotely without direct access to the Airflow scheduler or webserver.

Features

  • Communicates with Airflow instances through the REST API
  • Supports authentication using Airflow API tokens
  • Executes commands against remote Airflow deployments
  • Provides intuitive command organization with group-based structure
  • Includes detailed help documentation for all commands

Requirements

  • Python 3.11 or later (compatible with 3.11 <= Python <= 3.14)
  • Network access to an Apache Airflow instance with REST API enabled
  • [Recommended] Keyring backend installed in operating system for secure token storage.
    • In case there's no keyring available (common in headless environments) you can provide the token to each command. See the Security page for more information.

Usage

Access the tool from your terminal:

Command Line

airflowctl --help

Contributing

Want to help improve Apache Airflow? Check out our contributing documentation.

Additional Contribution Guidelines

  • Please ensure API is running while doing development testing.
  • There are two ways to have a CLI command,
    • Auto Generated Commands
    • Implemented Commands

Auto Generated Commands

Auto generation of commands directly from operations methods under airflow-ctl/src/airflowctl/api/operations.py. Whenever operation is mapped with proper datamodel and response model, it will be automatically added to the command.

You can check each command with airflowctl <command> --help to see the available options.

Implemented Commands

Implemented commands are the ones which are not auto generated and need to be implemented manually. You can check the implemented commands under airflow-ctl/src/airflowctl/ctl/commands/.