Kafka
Read Kafka metadata, group-less topic messages and consumer lag with kcat and rpk, with every run approved by you.
What it covers
Use Kafka when a consumer is slow, lagging or stuck, when a dead-letter topic is
suspected, or when a Kafka-connected service misbehaves. kcat shows cluster
metadata and bounded topic tails; rpk shows consumer-group lag and cluster or
topic state.
Connect
The two clients are separate providers: kafka runs kcat and kafka-rpk
runs rpk. Add the ones you use:
reckon connect kafka-prod --org acme --provider kafka --for-env prod
reckon connect rpk-prod --org acme --provider kafka-rpk --for-env prodBoth read the same KAFKA_* settings. Fill in each connection's file, for
example ~/.reckon/orgs/acme/secrets/kafka-prod.env:
KAFKA_BOOTSTRAP_SERVERS=broker1.example.com:9092,broker2.example.com:9092
KAFKA_SECURITY_PROTOCOL=SASL_SSL
KAFKA_SASL_MECHANISM=SCRAM-SHA-512
KAFKA_SASL_USERNAME=readonly
KAFKA_SASL_PASSWORD=replace_meReckon passes these to kcat as -b and -X options. For rpk it derives
RPK_BROKERS, RPK_USER, RPK_PASS, RPK_SASL_MECHANISM and, for TLS
protocols, RPK_TLS_ENABLED. An rpk connection can set RPK_BROKERS
directly instead. There is no reckon login for Kafka.
reckon verify kafka-prod runs kcat -L -J; reckon verify rpk-prod runs
rpk cluster info.
Read-only contract
Both are approval connections: the agent must ask you before each run, and Claude Code's settings in the org folder mark them as ask.
- The broker principal is the real barrier. Grant it only
DescribeandRead. kcat: Reckon refuses-P(produce),-G(consumer group),-b,-Fand-X.rpk: Reckon allows onlycluster info,cluster health,topic list,topic describe,topic consume,group listandgroup describe, and refuses-g,--group,--brokers,-X,--profileand--config.
Never join a production consumer group. A group read rebalances the real consumers and commits offsets. Always consume without a group.
Key commands
reckon run kafka -- -L -J -t <topic>
reckon run kafka -- -C -t <topic> -o -10 -e -q
reckon run kafka-rpk -- cluster info
reckon run kafka-rpk -- group list
reckon run kafka-rpk -- group describe <consumer-group>
reckon run kafka-rpk -- topic describe <topic>
reckon run kafka-rpk -- topic consume <topic> -n 10