A previous release had provenance metadata, but this release does not. View details.
Airflow CLI Wrapper
A command-line utility for interacting with the Airflow REST API. Compatible with both Airflow 2.9.x (basic auth) and 3.x (JWT auth).
Installation
uv tool install afcli
Or with pip:
pip install afcli
Configuration
Environment Variables
You can set authentication credentials using environment variables:
export AIRFLOW_HOST="airflow.example.com:8080" # Default: localhost:8080
export AIRFLOW_USER="admin"
export AIRFLOW_PASSWORD="your-password"
Command Line Arguments
Command line arguments override environment variables:
afcli --host airflow.example.com:8080 --user admin --password secret list
Usage
Basic Usage
By default, the tool connects to localhost:8080:
# Using environment variables
afcli list
# Using command line arguments
afcli --user admin --password secret status my_dag
Available Commands
List DAGs
afcli list
afcli list --limit 10 # Show only 10 DAGs
afcli list --all # Include inactive DAGs
View DAG Status
afcli status <dag_id>
Shows DAG configuration and recent runs with color-coded states.
Pause/Unpause DAG
afcli pause <dag_id>
afcli unpause <dag_id>
Trigger DAG
afcli trigger <dag_id>
afcli trigger <dag_id> --config '{"key": "value"}'
View Tasks and Their Status
afcli tasks <dag_id>
afcli tasks <dag_id> --run-id <specific_run_id>
Shows all tasks with color-coded states:
- 🟢 Green: Success
- 🔴 Red: Failed
- 🟡 Yellow: Running/Retry
- 🔵 Blue: Scheduled
- 🟣 Purple: Skipped
View Task Logs
afcli logs <dag_id> <task_id>
afcli logs <dag_id> <task_id> --run-id <specific_run_id> --try-number 2
Clear Failed Tasks
# Clear all failed tasks in the latest run
afcli clear <dag_id>
# Clear a specific task
afcli clear <dag_id> --task-id <task_id>
# Skip confirmation prompt
afcli clear <dag_id> -y
Examples
# Set credentials via environment
export AIRFLOW_USER=admin
export AIRFLOW_PASSWORD=secret
# List all DAGs
afcli list
# Check status of example_dag
afcli status example_dag
# Trigger example_dag with configuration
afcli trigger example_dag --config '{"date": "2024-01-01"}'
# View all tasks in the latest run
afcli tasks example_dag
# View logs for a specific task
afcli logs example_dag process_data
# Clear all failed tasks
afcli clear example_dag
Authentication
The tool automatically detects and uses the appropriate authentication method:
- Airflow 3.x: Uses JWT (JSON Web Token) authentication. The tool obtains a token from
/auth/tokenand includes it in API requests. - Airflow 2.9.x: Falls back to basic authentication when JWT endpoint is not available.
Authentication happens transparently - simply provide your credentials and the tool will use the appropriate method.
Development
Installation for Development
# Install with test dependencies
uv pip install -e ".[test]"
Running Tests
# Run all tests
pytest
# Run with coverage
pytest --cov=afcli --cov-report=html
# Run specific test categories
pytest -m unit # Unit tests only
pytest -m integration # Integration tests only
# Use Makefile commands
make test # All tests
make test-cov # With coverage report
make test-unit # Unit tests only
Metadata
Release files for afcli 0.1.12
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Loss of provenance
These files do not have provenance metadata, despite files in a prior release including this data.
We recommend further investigation before installing these files. View details.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| afcli-0.1.12.tar.gz | 51.0 kB | Without provenance | Details for afcli-0.1.12.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| afcli-0.1.12-py3-none-any.whl | Python 3 | none | any | Details for afcli-0.1.12-py3-none-any.whl |
Total release size: 63.2 kB
Release files / afcli-0.1.12.tar.gz
Loss of provenance
This file belongs to a release without provenance metadata, despite a prior release including this data.
We recommend further investigation before installing this file. View details.
| Download URL | afcli-0.1.12.tar.gz |
|---|---|
| Size | 51.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6409f79c1add0ee4e797a4047a5a51c090567b44788104e9fef5aa3c101ae07c
|
|
BLAKE2b-256 checksum How to use checksums |
30e25464334ea3cc701b59c151da9f8b8ec25c6df0aab08993957a13e3654c5a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.7.13
|
Release files / afcli-0.1.12-py3-none-any.whl
Loss of provenance
This file belongs to a release without provenance metadata, despite a prior release including this data.
We recommend further investigation before installing this file. View details.
| Download URL | afcli-0.1.12-py3-none-any.whl |
|---|---|
| Size | 12.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
98166bea2738dca691a29c10feb44cc997c25ac729aea51a6908f0362ce23fef
|
|
BLAKE2b-256 checksum How to use checksums |
d71bc706af37417b45bc1b8b18c68e6e6ab1e3896b386a71d21dd454ce1497db
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.7.13
|
Security for afcli 0.1.12
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Loss of provenance
A previous release of these files had provenance metadata, but this release does not.
While this could reflect a routine change by the project maintainers, it may also indicate that the release files have been compromised.
Release comparison
- Removed 0.1.4 2 files With provenance
- Added 0.1.12 2 files Without provenance
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.