Kafka
Runs Kafka 1 – 4 · macOS & Linux · registry page ↗
A local, disk-backed broker that speaks enough of the Kafka wire protocol that unmodified clients (franz-go, kcat, Sarama, the Java client) connect and work. No JVM, no ZooKeeper, no KRaft — the engine is doze-kafka, embedded in the module, and version selects the Kafka protocol profile it advertises (1–4). Declare topics and doze converges them on boot; auto-create handles the rest.
kafka "events" { version = 4 port = 9092
auto_create_topics = true default_partitions = 1 retention = "168h"
topic "orders" { partitions = 3 } topic "payments" { partitions = 1 config = { "cleanup.policy" = "compact" } }}Versions you can declare
Section titled “Versions you can declare”The version = you write is the engine’s own version — the only version
that’s yours. doze fetches and verifies it, pins it in doze.lock, and picks
the module release providing it automatically.
1 · 2 · 3 · 4
Configuration
Section titled “Configuration”| Field | Type | Default | Description |
|---|---|---|---|
version | number | — | Advertised Kafka protocol profile — 1, 2, 3, or 4. Required. |
auto_create_topics | bool | true | Create unknown topics on first reference. |
default_partitions | number | 1 | Partition count for auto-created topics. |
retention | string | — | Delete segments older than this (Go duration, e.g. “168h”); empty = unbounded. |
retention_bytes | number | — | Delete old segments once a partition exceeds this size (0 = unbounded). |
Module releases
Section titled “Module releases”Machinery, for the curious: the plugin releases that provide this engine.
doze selects the newest compatible one and pins it in doze.lock — you
never write these. Older releases stay resolvable for pinned lockfiles.
| Release | Engine versions | Platforms | |
|---|---|---|---|
0.1.1 | 1 · 2 · 3 · 4 | 3 | stable |
0.1.0 | 1 · 2 · 3 · 4 | 3 |
Raw signed data: index.yaml ↗ · meta.yaml ↗