Skip to main content

kaskade is a text user interface for kafka

Project description

kaskade

GitHub donate Libraries.io dependency status for latest release MIT License Pypi Version Homebrew Version Docker Version Platform Python Versions

Kaskade

Kaskade is a text user interface (TUI) for Apache Kafka, built with Textual by Textualize.

It includes features like:

Admin

  • List topics, partitions, groups and group members.
  • Topic information like lag, replicas and records count.
  • Create, edit and delete topics.
  • Filter topics by name.

Consumer

  • Json, string, integer, long, float, boolean and double deserialization.
  • Filter by key, value, header and/or partition.
  • Schema Registry support for avro and json.
  • Protobuf deserialization support without Schema Registry.
  • Avro deserialization without Schema Registry.

Limitations

Kaskade does not include:

  • Schema Registry for protobuf.
  • Runtime auto-refresh.

Screenshots

kaskade kaskade
kaskade kaskade

Installation

Install it with brew:

brew install kaskade

brew installation.

Install it with pipx:

pipx install kaskade

pipx installation.

Running kaskade

Admin view:

kaskade admin -b my-kafka:9092

Consumer view:

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

Configuration examples

Multiple bootstrap servers:

kaskade admin -b my-kafka:9092,my-kafka:9093

Consume and deserialize:

kaskade consumer -b my-kafka:9092 -t my-json-topic -k json -v json

Supported deserializers [bytes, boolean, string, long, integer, double, float, json, avro, protobuf, registry]

Consuming from the beginning:

kaskade consumer -b my-kafka:9092 -t my-topic --from-beginning

Schema registry simple connection deserializer:

kaskade consumer -b my-kafka:9092 -t my-avro-topic \
        -k registry -v registry \
        --registry url=http://my-schema-registry:8081

For more information about Schema Registry configurations go to: Confluent Schema Registry client.

Apicurio registry:

kaskade consumer -b my-kafka:9092 -t my-avro-topic \
        -k registry -v registry \
        --registry url=http://my-apicurio-registry:8081/apis/ccompat/v7

For more about apicurio go to: Apicurio registry.

SSL encryption example:

kaskade admin -b my-kafka:9092 -c security.protocol=SSL

For more information about SSL encryption and SSL authentication go to: Configure librdkafka client.

Confluent cloud admin and consumer:

kaskade admin -b ${BOOTSTRAP_SERVERS} \
        -c security.protocol=SASL_SSL \
        -c sasl.mechanism=PLAIN \
        -c sasl.username=${CLUSTER_API_KEY} \
        -c sasl.password=${CLUSTER_API_SECRET}
kaskade consumer -b ${BOOTSTRAP_SERVERS} -t my-avro-topic \
        -k string -v registry \
        -c security.protocol=SASL_SSL \
        -c sasl.mechanism=PLAIN \
        -c sasl.username=${CLUSTER_API_KEY} \
        -c sasl.password=${CLUSTER_API_SECRET} \
        --registry url=${SCHEMA_REGISTRY_URL} \
        --registry basic.auth.user.info=${SR_API_KEY}:${SR_API_SECRET}

More about confluent cloud configuration at: Kafka client quick start for Confluent Cloud.

Running with docker:

docker run --rm -it --network my-networtk sauljabin/kaskade:latest \
    admin -b my-kafka:9092
docker run --rm -it --network my-networtk sauljabin/kaskade:latest \
    consumer -b my-kafka:9092 -t my-topic

Avro consumer:

Consume using my-schema.avsc file:

kaskade consumer -b my-kafka:9092 --from-beginning \
        -k string -v avro \
        -t my-avro-topic \
        --avro value=my-schema.avsc

Protobuf consumer:

Install protoc command:

brew install protobuf

Generate a Descriptor Set file from your .proto file:

protoc --include_imports \
       --descriptor_set_out=my-descriptor.desc \
       --proto_path=${PROTO_PATH} \
       ${PROTO_PATH}/my-proto.proto

Consume using my-descriptor.desc file:

kaskade consumer -b my-kafka:9092 --from-beginning \
        -k string -v protobuf \
        -t my-protobuf-topic \
        --protobuf descriptor=my-descriptor.desc \
        --protobuf value=mypackage.MyMessage

More about protobuf and FileDescriptorSet at: Protocol Buffers documentation.

Questions

For Q&A go to GitHub Discussions.

Development

For development instructions see DEVELOPMENT.md.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kaskade-4.0.7.tar.gz (22.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kaskade-4.0.7-py3-none-any.whl (25.5 kB view details)

Uploaded Python 3

File details

Details for the file kaskade-4.0.7.tar.gz.

File metadata

  • Download URL: kaskade-4.0.7.tar.gz
  • Upload date:
  • Size: 22.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kaskade-4.0.7.tar.gz
Algorithm Hash digest
SHA256 cd907eb673d733ba27f4f89b649ad6bf19cd829745ae0dd8879989eb5a6bcc36
MD5 34edc779562847d80fdbf15690093e90
BLAKE2b-256 373b88be2113f39216a6ad36680ad599927cbb57dbd9eef9f4af3af138134187

See more details on using hashes here.

Provenance

The following attestation bundles were made for kaskade-4.0.7.tar.gz:

Publisher: release.yml on sauljabin/kaskade

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file kaskade-4.0.7-py3-none-any.whl.

File metadata

  • Download URL: kaskade-4.0.7-py3-none-any.whl
  • Upload date:
  • Size: 25.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kaskade-4.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 16215cb53a177c5169e5ac9ff443b1c425a2147120010493357377752e90fa54
MD5 b3f6a51ad740c9a7ef777eecc47b6e98
BLAKE2b-256 06cc75b8c1ae50d4acd41fb1b18c927b546bb340edad6dc29c901190ef304cb9

See more details on using hashes here.

Provenance

The following attestation bundles were made for kaskade-4.0.7-py3-none-any.whl:

Publisher: release.yml on sauljabin/kaskade

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page