#kafka #tui #consumer #ratatui #avro #user-interface

app yozefu

yozefu is a CLI tool for Apache kafka. It allows you to navigate topics and search Kafka records.

2 releases

new 0.0.2 Dec 16, 2024
0.0.1 Dec 10, 2024

#81 in GUI

Download history 147/week @ 2024-12-08

147 downloads per month

Apache-2.0

90KB
1K SLoC

Yōzefu

Minimum supported Rust version: 1.80.1 or plus Licence

Yōzefu is an interactive terminal user interface (TUI) application for exploring data of a kafka cluster. It is an alternative tool to AKHQ, redpanda console or the kafka plugin for JetBrains IDEs.

The tool offers the following features:

  • A real-time access to data published to topics.
  • A search query language inspired from SQL providing a fine-grained way filtering capabilities.
  • Ability to search kafka records across multiple topics.
  • Support for extending the search engine with user-defined filters written in WebAssembly (Extism).
  • The tool can be used as a terminal user interface or a CLI with the --headless flag.
  • One keystroke to export kafka records for further analysis.
  • Support for registering multiple kafka clusters, each with specific kafka consumer properties.

By default, the kafka consumer is configured with the property enable.auto.commit set to false, meaning no kafka consumer offset will be published to kafka.

Link to a demo video

Limitations

  • The tool is designed only to consume kafka records. There is no feature to produce records or manage a cluster.
  • Serialization formats such as json, xml or plain text are supported. Avro support is experimental for now. Protobuf is not supported.
  • The tool uses a ring buffer to store the last 500 kafka records.
  • There is probably room for improvement regarding the throughput (lot of clone() and deserialization).
  • Yozefu has been tested on MacOS Silicon but not on Windows or Linux. Feedback or contributions are welcome.

Getting started

[!NOTE] For a better visual experience, I invite you to install Powerline fonts.

cargo install yozefu

# By default, it starts the TUI. 
# The default registered cluster is localhost
yozf --cluster localhost

# You can also start the tool in headless mode.
# It prints the key of each kafka record matching the query in real time
yozf --cluster localhost               \
    --headless                         \
    --topics "public-french-addresses" \
    --format "json"                    \
    'from begin value.properties.type contains "street" and offset < 356_234 limit 10' \
  | jq '.key'


# Use the `configure` command to define new clusters
yozf configure

# You can create search filters
yozf create-filter --language rust key-ends-with

# And import them
yozf import-filter path/to/key-ends-with.wasm

You can also download pre-build binaries from the releases section. Attestions are available:

gh attestation verify --repo MAIF/yozefu <file-path of downloaded artifact> 

Try it

[!NOTE] Docker is required to start a single node Kafka cluster on your machine. JBang is not required but recommended if you want to produce records with the schema registry.

# It clones this repository, starts a docker kafka node and produce some json records
curl -L "https://raw.githubusercontent.com/MAIF/yozefu/refs/heads/main/docs/try-it.sh" | bash

yozf -c localhost

Documentation

Dependencies

~81MB
~1.5M SLoC