Single-node · In-memory · gRPC

Heads up: I ended up switching to NATS + PostgreSQL. If you need consumer groups, bare NATS won't help — you need JetStream, which requires persistence. tinybroker fills the gap when you want in-memory consumer groups with no persistence overhead. The code works and is free to use; just know why you're reaching for it.

vs Apache Iggy

Apache Iggy is a high-performance, persistent message streaming platform written in Rust. It supports multiple protocols (QUIC, TCP, HTTP), persistence to disk, consumer groups, and horizontal partitioning.

Use Iggy when

  • You need messages to survive broker restarts or process crashes.
  • You need to replay historical messages from a specific offset.
  • You are building a streaming pipeline where data durability is a requirement.
  • You want multiple wire protocols (QUIC for low-latency clients, HTTP for browser compatibility).
  • You need partitioned topics for high-throughput horizontal scaling.

Use tinybroker when

  • You need pub/sub coordination between replicas of a service but have no durability requirement — a restart clearing all state is acceptable.
  • You want a smaller operational footprint: a single static binary under 10 MB with no disk, no WAL, no compaction, no partition management.
  • Your team already uses gRPC everywhere and a generated client is simpler than learning a new protocol or SDK.
  • You want something that starts, connects, and disappears without operational ceremony.

The core trade-off

Iggy’s persistence and multi-protocol design is powerful but comes with operational surface area: disk management, retention policies, partition configuration, consumer group offsets, and upgrade procedures. tinybroker has none of that surface area — and none of that durability. Choose based on whether a message lost on restart matters for your use case.