<!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 -->

# 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.10 or later (compatible with 3.10 <= 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](https://airflow.apache.org/docs/apache-airflow-ctl/stable/security.html) for more information.

## Usage

Access the tool from your terminal:

### Command Line

```bash
airflowctl --help
```

## Contributing

Want to help improve Apache Airflow? Check out our [contributing documentation](https://github.com/apache/airflow/blob/main/contributing-docs/README.rst).

### 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/clt/commands/`.
