A terminal UI for exploring and operating Kafka clusters. Follow messages live, filter them, watch consumer lag, reset offsets, replay and produce, manage schemas and topics, and check broker health.
Built with Rust, ratatui, librdkafka
Runs on Linux and macOS
Latest release
curl -fsSL https://prasenjithiwale.github.io/folio/kaffy/install.sh | sh
Copy
◆ kaffy demo ✎ WRITE ● connected · 3 brokers topic orders 1 Topics 2 Groups 3 Schemas 4 Brokers
╭ orders ───────── 3 partitions · from last 100 per partition · 313 buffered (max 5000) · 313 received ● LIVE ╮
│ P OFFSET TIMESTAMP KEY VALUE │
│ 1 397 2026-10-13 16:53:18.644 cust-067 { "order_id" : "ord-1-000397" , "customer" : "cust-067" , "status" : │
│ 2 397 2026-10-13 16:53:18.644 cust-109 { "order_id" : "ord-2-000397" , "customer" : "cust-109" , "status" : │
│ 0 398 2026-10-13 16:53:20.144 cust-062 { "order_id" : "ord-0-000398" , "customer" : "cust-062" , "status" : │
│ 1 398 2026-10-13 16:53:20.144 cust-222 { "order_id" : "ord-1-000398" , "customer" : "cust-222" , "status" : │
│ 2 398 2026-10-13 16:53:20.144 cust-007 { "order_id" : "ord-2-000398" , "customer" : "cust-007" , "status" : │
│ 0 399 2026-10-13 16:53:21.644 cust-221 ∅ tombstone │
│ 1 399 2026-10-13 16:53:21.644 cust-070 ∅ tombstone │
│ 2 399 2026-10-13 16:53:21.644 cust-025 ∅ tombstone │
│ 1 400 2026-10-13 16:53:23.436 cust-225 { "order_id" : "ord-1-000400" , "customer" : "cust-225" , "status" : │
│ 0 400 2026-10-13 16:53:23.557 cust-235 { "order_id" : "ord-0-000400" , "customer" : "cust-235" , "status" : │
│ 1 401 2026-10-13 16:53:23.675 cust-053 { "order_id" : "ord-1-000401" , "customer" : "cust-053" , "status" : │
│ 2 400 2026-10-13 16:53:23.795 cust-064 { "order_id" : "ord-2-000400" , "customer" : "cust-064" , "status" : │
│ 1 402 2026-10-13 16:53:23.916 cust-021 { "order_id" : "ord-1-000402" , "customer" : "cust-021" , "status" : │
│ 0 401 2026-10-13 16:53:24.037 cust-224 { "order_id" : "ord-0-000401" , "customer" : "cust-224" , "status" : │
│ 2 401 2026-10-13 16:53:24.156 cust-077 { "order_id" : "ord-2-000401" , "customer" : "cust-077" , "status" : │
│ 1 403 2026-10-13 16:53:24.277 cust-091 { "order_id" : "ord-1-000403" , "customer" : "cust-091" , "status" : │
│ 1 404 2026-10-13 16:53:24.397 cust-024 { "order_id" : "ord-1-000404" , "customer" : "cust-024" , "status" : │
│ 0 402 2026-10-13 16:53:24.518 cust-122 { "order_id" : "ord-0-000402" , "customer" : "cust-122" , "status" : │
│ 1 405 2026-10-13 16:53:24.637 cust-129 { "order_id" : "ord-1-000405" , "customer" : "cust-129" , "status" : │
│ 1 406 2026-10-13 16:53:24.758 cust-040 { "order_id" : "ord-1-000406" , "customer" : "cust-040" , "status" : │
│ ▌ 0 403 2026-10-13 16:53:24.875 cust-210 { "order_id" : "ord-0-000403" , "customer" : "cust-210" , "status" : │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
↑↓ move ⏎ open space pause / filter p produce E edit & produce : commands ? keys
See every screen