A Rust reimplementation of Apache Kafka. Byte-for-byte wire compatible and KRaft-native — matching its throughput on ~40× less memory, and no JVM to babysit.
Matches Apache Kafka 4.3's produce-and-consume throughput within a few percent on identical hardware — ahead on the 1 KiB workloads — at 1.15–1.2× the messages per CPU-core and tighter tail latency.
Broker resident in 24–32 MiB versus Kafka's ~1 GiB JVM heap. No GC pauses, no heap to tune.
Cold start to first ack in 1–2 s, versus 8–9 s for a Kafka broker on the same box.
Speaks the Kafka wire protocol exactly. Your existing clients and the JVM kafka-*.sh tools work unmodified.
Same wire protocol. Same admin tools. A fraction of the footprint.
| Capability | Apache Kafka 4.3 | Crabka |
|---|---|---|
| Runtime | JVM (OpenJDK 21) + garbage collector | Native binary — no JVM, no GC |
| Broker memory | ~1 GiB heap | 24–32 MiB RSS |
| Cold start to ready | 8–9 s | 1–2 s |
| Produce/consume throughput | baseline | ≈ parity (0.9–1.0×) |
| Packaging | JVM + shell scripts | Single static binary |
| Memory safety | Manual / JVM-managed | Safe Rust — unsafe forbidden |
| Metadata quorum | KRaft | KRaft — native Rust, real KIP-595 wire |
| Wire protocol | Apache Kafka 4.3 | Apache Kafka 4.3 — byte-exact |
| Admin tooling | kafka-*.sh |
kafka-*.sh, unmodified |
| Operator & rebalancer | Strimzi + Cruise Control (separate) | Built in |
| License | Apache 2.0 | Apache 2.0 |
* Producer write path, single-box like-for-like. See the full benchmark methodology →
Kafka semantics, re-engineered in safe Rust.
Every encode/decode is checked against kafka-clients 4.3.0 with differential byte-equality tests, and a JVM acceptance suite drives the official cp-kafka admin tools against a live broker.
Async Rust on tokio. No JVM, no GC pauses, and unsafe_code = "forbid" across the entire workspace.
No JDK, no ZooKeeper, no separate controller process. One binary to ship, run, and operate.
Metadata lives in a native KRaft quorum from day one — speaking the real KIP-595 wire (interoperable with JVM controllers), with snapshots, dynamic reconfiguration, and split controller/broker roles included.
TLS via rustls; SASL/SCRAM-256/512, PLAIN, OAUTHBEARER (JWT/JWKS), and GSSAPI/Kerberos out of the box.
Native producer, consumer, and admin clients, a Kubernetes operator, and an automated rebalancer — all in one workspace.
Point your existing producers, consumers, and kafka-*.sh tooling at a Crabka broker and keep moving.