Metadata-Version: 2.4
Name: flowrs
Version: 0.16.0
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: Programming Language :: Rust
Classifier: Topic :: System :: Monitoring
Classifier: Topic :: Utilities
License-File: LICENSE
Summary: A Terminal User Interface (TUI) for Apache Airflow
Keywords: airflow,tui,terminal,dag,ratatui
Home-Page: https://github.com/jvanbuel/flowrs
Author-email: Jan Vanbuel <jan@lightcone.be>
License-Expression: MIT
Requires-Python: >=3.9
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Changelog, https://github.com/jvanbuel/flowrs/blob/main/CHANGELOG.md
Project-URL: Homepage, https://github.com/jvanbuel/flowrs
Project-URL: Issues, https://github.com/jvanbuel/flowrs/issues
Project-URL: Repository, https://github.com/jvanbuel/flowrs

![flowrs_logo](https://media.githubusercontent.com/media/jvanbuel/flowrs/main/image/README/1683789045509.png)

[![CI](https://github.com/jvanbuel/flowrs/actions/workflows/ci.yml/badge.svg)](https://github.com/jvanbuel/flowrs/actions/workflows/ci.yml)
[![Crates.io](https://img.shields.io/crates/v/flowrs-tui.svg)](https://crates.io/crates/flowrs-tui)
[![Downloads](https://img.shields.io/crates/d/flowrs-tui.svg)](https://crates.io/crates/flowrs-tui)
[![License](https://img.shields.io/crates/l/flowrs-tui.svg)](https://github.com/jvanbuel/flowrs/blob/main/LICENSE)
[![MSRV](https://img.shields.io/badge/MSRV-1.87.0-blue)](https://github.com/jvanbuel/flowrs)
[![Built With Ratatui](https://ratatui.rs/built-with-ratatui/badge.svg)](https://ratatui.rs/)

Flowrs is a TUI application for [Apache Airflow](https://airflow.apache.org/). It allows you to monitor, inspect and manage Airflow DAGs from the comforts of your terminal. It is build with the [ratatui](https://ratatui.rs/) library.

![flowrs demo](https://media.githubusercontent.com/media/jvanbuel/flowrs/main/vhs/flowrs.gif)

## Installation

You can install `flowrs` via Homebrew if you're on macOS / Linux / WSL2:

```
brew install flowrs
```

or with `uv` on macOS (Apple silicon and Intel) and Linux x86_64:

```bash
uv tool install flowrs
```

You can also download the binary directly from GitHub:

```bash
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/jvanbuel/flowrs/releases/latest/download/flowrs-tui-installer.sh | sh
```

Alternatively, you can build `flowrs` from source with `cargo`:

```bash
cargo install flowrs-tui --locked
```

## Usage

### Managed Airflow services

The easiest way to user `flowrs` is with a managed Airflow service. The currently supported managed services are:

- [x] Conveyor
- [x] Amazon Managed Workflows for Apache Airflow (MWAA)
- [x] Google Cloud Composer
- [x] Astronomer

To enable a managed service, run `flowrs config enable -m <service>`. This will add the configuration for the managed service to your configuration file, or prompt you for the necessary configuration details. On startup `flowrs` will then try to find and connect to all available managed service's Airflow instances.

Note that for Astronomer, you need to set the `ASTRO_API_TOKEN` environment variable with your Astronomer API token (Organization, Workspace or Deployment) to be able to connect to the service.

### Custom Airflow instances

If you're self-hosting an Airflow instance, or your favorite managed service is not yet supported, you can register an Airflow server instance with the `flowrs config add` command:

![flowrs config add demo](https://media.githubusercontent.com/media/jvanbuel/flowrs/main/vhs/add_config.gif)

This creates an entry in your configuration file at `$XDG_CONFIG_HOME/flowrs/config.toml` (following the XDG Base Directory Specification, which defaults to `~/.config/flowrs/config.toml`). For backwards compatibility, flowrs also reads from `~/.flowrs` if the XDG location doesn't exist. If you have multiple Airflow servers configured, you can easily switch between them in `flowrs` configuration screen.

Flowrs supports authenticating with HTTP Basic Auth, bearer tokens, or a session cookie. When selecting the bearer token option, you can either provide a static token or a command that generates a token. The cookie option lets you either paste a `Cookie` header value copied from an authenticated browser session (for example `session=abc123`) or provide a command that prints the cookie, which flowrs re-runs to refresh a rotating cookie; the value is sent verbatim on every request. This is useful when programmatic auth is only possible by logging in through the browser and copying the cookie out. To avoid leaking the cookie, flowrs refuses to send it over plaintext HTTP unless the endpoint is a loopback address (for example a port-forwarded `http://localhost:8080`).

### Themes

Flowrs ships with six themes, including four [Catppuccin](https://github.com/catppuccin/catppuccin) flavors. The active theme is configured with `flowrs config --theme <theme>`:

| Theme | Description |
|---|---|
| `auto` | Detects your terminal background and picks dark or light (default) |
| `dark` | Dark theme |
| `light` | Light theme |
| `catppuccin-latte` | Catppuccin Latte (light) |
| `catppuccin-frappe` | Catppuccin Frappé (medium-dark) |
| `catppuccin-macchiato` | Catppuccin Macchiato (dark) |
| `catppuccin-mocha` | Catppuccin Mocha (darkest) |

