Metadata-Version: 2.5
Name: kaskade
Version: 5.0.0
Summary: kaskade is a text user interface for kafka
Project-URL: homepage, https://github.com/sauljabin/kaskade
Project-URL: repository, https://github.com/sauljabin/kaskade
Project-URL: documentation, https://github.com/sauljabin/kaskade
Project-URL: changelog, https://github.com/sauljabin/kaskade/releases
Project-URL: issues, https://github.com/sauljabin/kaskade/issues
Project-URL: funding, https://github.com/sponsors/sauljabin
Author-email: Saúl Piña <sauljabin@gmail.com>
License-Expression: MIT
License-File: LICENSE
Keywords: kafka,kaskade
Classifier: Environment :: Console
Classifier: Operating System :: MacOS
Classifier: Operating System :: Unix
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Python: <3.15,>=3.10
Requires-Dist: authlib<1.8,>=1.0
Requires-Dist: aws-msk-iam-sasl-signer-python>=1.0
Requires-Dist: cloup>=3.1
Requires-Dist: confluent-kafka[avro,json,protobuf]>=2.15
Requires-Dist: fastavro>=1.12
Requires-Dist: grpcio-tools>=1.75
Requires-Dist: httpx>=0.28
Requires-Dist: jsonschema>=4.25
Requires-Dist: pyyaml>=6.0
Requires-Dist: textual>=8.2
Description-Content-Type: text/markdown

<p align="center">
<a href="https://github.com/sauljabin/kaskade"><img alt="kaskade" width="400" src="https://raw.githubusercontent.com/sauljabin/kaskade/main/images/banner.svg"></a>
</p>

<p align="center">
<a href="https://github.com/sauljabin/kaskade/actions/workflows/main.yml"><img alt="CI status" src="https://img.shields.io/github/actions/workflow/status/sauljabin/kaskade/main.yml?branch=main&style=flat-square&logo=githubactions&logoColor=white&label=ci"></a>
<a href="https://github.com/sauljabin/kaskade/blob/main/LICENSE"><img alt="MIT License" src="https://img.shields.io/github/license/sauljabin/kaskade?style=flat-square&logo=opensourceinitiative&logoColor=white&label=license"></a>
<a href="https://github.com/sponsors/sauljabin"><img alt="Sponsor on GitHub" src="https://img.shields.io/badge/sponsor-GitHub-EA4AAA?style=flat-square&logo=githubsponsors&logoColor=white"></a>
<br>
<a href="https://pypi.org/project/kaskade"><img alt="PyPI version" src="https://img.shields.io/pypi/v/kaskade?style=flat-square&logo=pypi&logoColor=white&label=pypi"></a>
<a href="https://formulae.brew.sh/formula/kaskade"><img alt="Homebrew version" src="https://img.shields.io/homebrew/v/kaskade?style=flat-square&logo=homebrew&logoColor=white&label=homebrew"></a>
<a href="https://hub.docker.com/r/sauljabin/kaskade/tags"><img alt="Docker version" src="https://img.shields.io/docker/v/sauljabin/kaskade?style=flat-square&logo=docker&logoColor=white&label=docker"></a>
</p>

Kafka flows through your terminal. Kaskade brings topic administration and record
inspection into one fast, keyboard-driven interface, with flexible
deserialization and secure connections built in.

## Screenshots

<table width="100%">
  <tr>
    <th width="50%">Admin</th>
    <th width="50%">Consumer</th>
  </tr>
  <tr>
    <td width="50%">
      <img alt="Kaskade admin mode" width="100%" src="https://raw.githubusercontent.com/sauljabin/kaskade/main/images/admin.svg">
    </td>
    <td width="50%">
      <img alt="Kaskade consumer mode" width="100%" src="https://raw.githubusercontent.com/sauljabin/kaskade/main/images/consumer.svg">
    </td>
  </tr>
</table>

## Features

### Kafka administration

- Browse topics, partitions, consumer groups, and group members
- Inspect topic configuration, lag, replicas, and record counts
- Create, edit, delete, and filter topics without leaving the TUI
- Refresh topic metadata and metrics automatically or manually

### Record consumption

- Deserialize keys and values as bytes, primitives, JSON, Avro, or Protobuf,
  including Confluent Schema Registry and native Apicurio Registry v3
- Resolve Registry Protobuf messages and referenced schemas without generated classes
- Select raw, Apicurio, or Confluent framing independently for local key and value deserializers
- Filter records by key, value, header, or partition
- Start from the earliest offsets or explicit partition/offset selections
- Preserve malformed keys, values, and headers with BYTES fallback metadata
- Present bytes as Base64, hex, byte arrays, or escaped bytes with encoding metadata
- Copy or export individual records as JSON

### Connections and configuration

- Reuse Kafka, Registry, and AWS settings from an INI client profile
- Pass Kafka and Registry client properties directly from the command line
- Configure consumer and admin operation deadlines for higher-latency clusters
- Connect through TLS, SASL, Confluent Cloud, or Amazon MSK IAM authentication
- Use Confluent Schema Registry, native Apicurio Registry, or Apicurio's
  Confluent-compatible API

### Terminal experience

- Navigate entirely by keyboard with arrow and Vim-style shortcuts
- Customize themes and keybindings
- Copy data through an [OSC 52-compatible terminal](https://github.com/sauljabin/kaskade/blob/main/USAGE.md#osc-52-compatibility)

## Quick start

### Homebrew

```bash
brew install kaskade
```

### pipx

```bash
pipx install kaskade
```

### Connect to Kafka

Admin view:

```bash
kaskade admin -b my-kafka:9092
```

Consumer view:

```bash
kaskade consumer -b my-kafka:9092 -t my-topic
```

## Usage

For configuration and usage examples, see the [Kaskade usage guide](https://github.com/sauljabin/kaskade/blob/main/USAGE.md).

## Development

For development instructions, see the [Kaskade development guide](https://github.com/sauljabin/kaskade/blob/main/DEVELOPMENT.md).

## Releases

See [GitHub Releases](https://github.com/sauljabin/kaskade/releases) for release notes and downloadable artifacts.

## Questions

For Q&A go to [GitHub Discussions](https://github.com/sauljabin/kaskade/discussions/categories/q-a).

## Security

Report suspected vulnerabilities privately by following the [Kaskade security policy](https://github.com/sauljabin/kaskade/blob/main/SECURITY.md).

## Donations

If Kaskade is useful to you, consider [supporting its development on GitHub Sponsors](https://github.com/sponsors/sauljabin).

## AI Assistance

This project uses AI-assisted development tools. Some code and documentation
may be generated or revised with AI assistance. All AI-assisted changes are
reviewed and tested by the maintainer before they are included.

## Acknowledgements

<p>
<a href="https://github.com/littlehorse-enterprises/littlehorse"><img alt="Sponsored by LittleHorse" src="https://raw.githubusercontent.com/sauljabin/kaskade/main/images/littlehorse-badge.svg"></a>
<a href="https://textual.textualize.io/"><img alt="Built with Textual" src="https://raw.githubusercontent.com/sauljabin/kaskade/main/images/textual-badge.svg"></a>
</p>
