A native-Rust Kafka-compatible broker and toolkit. Crabka speaks the Kafka wire protocol byte-for-byte, runs KRaft without a JVM, and keeps the operator, clients, schema registry, gateway, and rebalancer in one workspace.
Matches or beats a like-for-like Strimzi cluster on key produce-and-consume workloads, including multi-producer fan-out, at 1.6–3.0× the messages per CPU-core.
A Crabka broker's working set sits in the low hundreds of MiB against Strimzi's 2.5–5.5 GiB. No GC pauses, no heap to tune.
Cold start to first ack in 1–2 s — no JVM warmup, no GC ramp.
Speaks the Kafka wire protocol exactly. Existing clients and the JVM kafka-*.sh tools work unmodified.
Same wire protocol. Same admin tools. A fraction of the footprint.
| Capability | Strimzi (Apache Kafka) | Crabka |
|---|---|---|
| Runtime | JVM (OpenJDK 21) + garbage collector | Native binary — no JVM, no GC |
| Broker memory | 2.5–5.5 GiB | 114–622 MiB measured |
| Cold start to ready | 8–9 s | 1–2 s |
| Produce/consume throughput | baseline | matches–beats |
| 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) | Crabka operator + rebalancer |
| License | Apache 2.0 | Apache 2.0 |
* Three-broker Kubernetes cluster, identical pod resources. 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 and no ZooKeeper. Run a broker/controller process as a native binary, or let the Kubernetes operator manage it.
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, admin, and streams clients, Schema Registry, a gateway, Kubernetes operator, and automated rebalancer — all in one workspace.
Point your existing producers, consumers, and kafka-*.sh tooling at a Crabka broker and keep moving.