MCPcopy Index your code
hub / github.com/MAIF/yozefu

github.com/MAIF/yozefu @v0.0.30

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.0.30 ↗ · + Follow
787 symbols 1,725 edges 155 files 103 documented · 13%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README
<img width="150" alt=" Pixel art portrait of a serious-faced person in grayscale above the text 'Yozefu'" src="https://github.com/MAIF/yozefu/raw/main/docs/public/logo.svg">

Yozefu crate.io page Minimum supported Rust version: 1.85.0 or plus Licence Built With Ratatui

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.

Demo of Yozefu: The user selects a topic and sees and real time new records published to Kafka.

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

# packages such as `libclang-dev` are required to build Yōzefu
# for more details https://maif.github.io/yozefu/getting-started/#prerequisites
RUSTFLAGS="--cfg tokio_unstable" cargo install --locked 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. Attestations are available:

gh attestation verify --repo MAIF/yozefu $(which yozf)

brew install yozefu

yay -S yozefu

nix run github:MAIF/yozefu

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 produces json records
curl -L "https://raw.githubusercontent.com/MAIF/yozefu/refs/heads/main/docs/try-it.sh" | bash

yozf -c localhost

Documentation

To check out docs, visit https://maif.github.io/yozefu/.

Screenshots

 A TUI displays a list of topics on the left, a search bar below, and records with timestamps and values in a table on the right. A TUI listing the consumed kafka records with their timestamps, their partition, their offset and an excerpt of the key and the value.
View of a selected kafka records View of the help page

Extension points exported contracts — how you extend this code

Command (Interface)
Trait for all commands. I don't know if it's relevant... [6 implementers]
crates/command/src/command/mod.rs
Component (Interface)
(no doc) [13 implementers]
crates/tui/src/component/mod.rs
Search (Interface)
(no doc) [8 implementers]
crates/app/src/search/mod.rs
Comparable (Interface)
(no doc) [1 implementers]
crates/lib/src/kafka/data_type.rs
Into (Interface)
(no doc)
docs/demo/serializers/Into.java
KafkaRecord (Interface)
(no doc)
crates/wasm-blueprints/js/src/index.d.ts
KafkaFormatter (Interface)
A kafka formatter displays a kafka record to stdout. [4 implementers]
crates/command/src/headless/formatter/mod.rs
WithHeight (Interface)
(no doc) [1 implementers]
crates/tui/src/component/mod.rs

Core symbols most depended-on inside this repo

wsi
called by 79
crates/lib/src/search/wsi.rs
push
called by 57
crates/tui/src/records_buffer.rs
len
called by 54
crates/tui/src/records_buffer.rs
into
called by 52
docs/demo/serializers/Into.java
iter
called by 47
crates/tui/src/records_buffer.rs
parse
called by 34
crates/lib/src/search/search_query.rs
extend
called by 26
crates/tui/src/records_buffer.rs
is_empty
called by 24
crates/tui/src/records_buffer.rs

Shape

Method 471
Function 174
Class 96
Enum 31
Interface 12
Struct 3

Languages

Rust92%
Java6%
Go1%
TypeScript1%

Modules by API surface

crates/tui/src/component/records_component.rs21 symbols
crates/command/src/command/main_command.rs20 symbols
crates/tui/src/component/mod.rs17 symbols
crates/tui/src/component/root_component.rs16 symbols
crates/lib/src/kafka/kafka_record.rs16 symbols
crates/app/src/search/mod.rs16 symbols
crates/tui/src/tui.rs14 symbols
crates/tui/src/records_buffer.rs14 symbols
crates/tui/src/component/topics_list.rs14 symbols
crates/tui/src/component/topic_details_component.rs14 symbols
crates/tui/src/component/search_component.rs14 symbols
crates/lib/src/kafka/schema_registry_client.rs14 symbols

Datastores touched

conduktor-consoleDatabase · 1 repos

For agents

$ claude mcp add yozefu \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact