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.6.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.6-py3-none-any.whl (25.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: kaskade-4.0.6.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.6.tar.gz
Algorithm Hash digest
SHA256 8f88866fdb275f14be05e6e137718b7bc9667aa52434e8f21e37267b8b8a7337
MD5 9ca23f76ee73c454f55068963042da05
BLAKE2b-256 8ee058bfb461d4cf41aaa673957308ed66a251e7f6aa78acde36360f800d84ae

See more details on using hashes here.

Provenance

The following attestation bundles were made for kaskade-4.0.6.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.6-py3-none-any.whl.

File metadata

  • Download URL: kaskade-4.0.6-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.6-py3-none-any.whl
Algorithm Hash digest
SHA256 af206fd1df6f9a91c54eee7716d7a988259f9dc2ad990ed1fb66f0ab58b30947
MD5 e76dd8af0c00490cb052b7e691877313
BLAKE2b-256 3426aac2a49ca8d37532647b797869e192d59c232ccce629b73281ba10f6a2e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for kaskade-4.0.6-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