// the find
streamdal/plumber
A swiss army knife CLI tool for interacting with Kafka, RabbitMQ and other messaging systems.
plumber is a CLI tool for reading, writing, and routing messages across 20+ messaging systems — Kafka, RabbitMQ, SQS, PubSub, NATS, and more. It handles encoding/decoding of protobuf, Avro, and Thrift in-flight, so you can actually see what's in your queues without writing a throwaway consumer. Aimed at developers debugging event-driven systems or wiring disparate systems together.
The backend coverage is genuinely wide — 20+ systems with a consistent read/write/relay interface means you learn one tool and it works across your whole stack. Protobuf support is particularly well done: deep envelope, shallow envelope, and google.protobuf.Any fields are all handled, using jhump/protoreflect rather than something fragile and hand-rolled. Single static binary with no runtime dependencies makes it trivially installable in CI or on a prod bastion. The relay and tunnel modes let you bridge systems or replay production traffic locally without touching firewall rules, which is actually useful and not just demo-ware.
The Streamdal platform integration is pushed throughout the docs and the relay/tunnel feature is clearly designed to funnel you toward their SaaS — the 'swiss army knife' framing downplays that this is also a loss-leader for a commercial product, and the open-source offering loses features if you don't connect to their backend. NATS Streaming (Stan) is listed but was deprecated by the NATS team years ago and is effectively dead; having it here with no deprecation notice is a trap for anyone grepping the README. Test coverage is uneven — several backends have no tests at all (ActiveMQ, NSQ, NATS non-streaming), which matters when the whole value proposition is 'it works with your system.' No support for consumer group management, topic creation, or partition reassignment on Kafka, so if you want to actually manage Kafka and not just read from it, you still need kafka-topics or kcat.