krabka Documentation
Guides for building, operating, and streaming with krabka.
What do you want to do?
Cluster Lab is view-only on phones. Use a wider screen for editing nodes and injecting faults.
krabka implements the Apache Kafka wire protocol and KRaft metadata quorum in Rust. The broker forbids unsafe code. Creusot proves selected decision-kernel contracts, and Stateright checks failure sequences within model bounds. The compatibility matrix lists API support and implementation status.
Components
-
Schema-generated Kafka protocol codecs: Generated from upstream Apache Kafka JSON schemas. Differential suites compare supported protocol behavior against live Kafka; standard
kafka-clients, JVM CLI tools, and producer/consumer applications can use supported APIs listed in the compatibility matrix. -
Native KRaft quorum: Metadata is replicated via a native Raft implementation (
krabka-raft) implementing the KIP-595 RPC protocol with zero ZooKeeper dependency. - Tiered storage subsystem: Asynchronously offloads sealed partition segments to Amazon S3-compatible stores (including MinIO) or Google Cloud Storage (KIP-405).
- Stream processing: Libraries for Go, Java, and Rust with state stores, Apache Arrow batch operators, schema serdes, and barrier coordination. Support varies by language.
Correctness & Verification
See Correctness & Verification for how safe Rust, Creusot proofs, Stateright model checking, mutation testing, and differential suites fit together, and the verification catalog for every proof, every model, and the formal boundary.
Architectural Deep Dives
For engineering rationale and system topology:
- Ecosystem Architecture: Repository boundaries and one-way dependency layering from the wire codecs up to the operator.
- Runtime Architecture: Operational topology, control plane reconcile loops, and data plane interactions between broker nodes, schema registry, and operator.
The Broader krabka Ecosystem
This site covers the broker and the Kafka ecosystem around it. Projects that build on the broker but are not Kafka components are documented in their own repositories: krabka-o11y for observability and gres for Postgres-compatible compute on krabka.
Continuous Documentation Pipeline
The krabka documentation hub is decoupled from individual sub-repositories and synchronized automatically:
-
Decentralized authoring: Architecture and engineering guides are maintained directly alongside the code in each component repository (
krabka-broker,krabka-streams-java, andkrabka-streams-go). - API references: Each component repository builds and publishes its own Rustdoc, Javadoc, or Go reference. The /api directory links to those sites.
- Build synchronization: The site build imports guides from the broker, Java streams, Go streams, operator, rebalancer, and gateway repositories.
Next Steps
- Operator CRD explorer: search the fields, defaults, and validation rules for every custom resource.
- Rebalancer: configure the service, review a proposal, and execute partition moves.
- Gateway: connect gRPC clients and configure webhook ingestion and delivery.