Skip to content

Compatibility

klite aims for drop-in compatibility with standard Kafka clients. Any franz-go, librdkafka, or Java Kafka client should be able to connect, produce, consume, and use consumer groups without code changes beyond updating the broker address.

klite targets Kafka 4.0+ wire protocol compatibility (KIP-896 version floors). Only message format v2 (RecordBatch) is supported.

Client LibraryLanguageStatus
franz-goGoFully supported
confluent-kafka-go (librdkafka)GoFully supported
librdkafkaC/C++Fully supported
confluent-kafka-pythonPythonFully supported
kafka-pythonPythonFully supported
KafkaJSNode.jsFully supported
kafka-clients (Java)JavaFully supported
saramaGoFully supported
Spring KafkaJavaFully supported

If your client speaks the standard Kafka wire protocol with message format v2, it should work with klite.

klite implements 39 Kafka API keys across the core data path, consumer groups, transactions, admin, and authentication.

API KeyAPINotes
0ProduceFull support. acks=0, 1, all. LogAppendTime.
1FetchLong-polling, size limits, KIP-74.
2ListOffsetsEarliest, latest, timestamp lookup.
3MetadataAuto-create topics, topic IDs.
18ApiVersionsReports all supported APIs and version ranges.
API KeyAPINotes
10FindCoordinatorGroup and transaction coordinators.
11JoinGroupEager and cooperative rebalance.
14SyncGroupPartition assignment distribution.
12HeartbeatSession timeout enforcement.
13LeaveGroupGraceful consumer shutdown.
8OffsetCommitPer-group offset tracking.
9OffsetFetchRetrieve committed offsets.
47OffsetDeleteDelete committed offsets.
API KeyAPINotes
22InitProducerIDProducer ID assignment, epoch bumps.
24AddPartitionsToTxnRegister partitions in a transaction.
25AddOffsetsToTxnRegister group offsets in a transaction.
26EndTxnCommit or abort a transaction.
28TxnOffsetCommitCommit offsets within a transaction.
61DescribeProducersInspect active producer state.
65DescribeTransactionsInspect active transactions.
66ListTransactionsList all active transactions.
API KeyAPINotes
19CreateTopicsName validation, config, partition count.
20DeleteTopicsBy name or topic ID.
37CreatePartitionsAdd partitions to existing topics.
32DescribeConfigsTopic and broker configs.
33AlterConfigsSet topic configs (legacy).
44IncrementalAlterConfigsIncremental config updates.
16ListGroupsList all consumer groups.
15DescribeGroupsGroup membership and state.
42DeleteGroupsDelete inactive consumer groups.
21DeleteRecordsAdvance log start offset.
60DescribeClusterCluster metadata.
35DescribeLogDirsLog directory sizes.
23OffsetForLeaderEpochLeader epoch offset lookup.
API KeyAPINotes
17SASLHandshakeSASL mechanism negotiation.
36SASLAuthenticatePLAIN, SCRAM-SHA-256, SCRAM-SHA-512.
51AlterUserScramCredentialsManage SCRAM users.
50DescribeUserScramCredentialsList SCRAM users.

These Kafka features are intentionally not supported:

FeatureReason
Multi-broker clusteringklite is a single-broker architecture. Durability comes from S3.
KRaft / ZooKeeperNo controller quorum needed.
Inter-broker APIsLeaderAndIsr, StopReplica, UpdateMetadata, etc. are cluster-internal.
Kafka ConnectServer-side connector framework. Use standalone connectors.
Kafka Streams server-sideKafka Streams clients work fine — they’re just producers and consumers.
Schema RegistryNot a broker feature. Use Confluent Schema Registry or Karapace alongside klite.
Share groups (KIP-932)Not implemented.
Delegation tokensNot implemented.
Message format v0/v1Only v2 (RecordBatch) is supported. Very old clients may not work.
Quota enforcementConfigs are stored but not enforced.
BehaviorKafkaklite
ReplicationISR-based, configurable replication factorNone (single broker). S3 provides durability.
Partition reassignmentDynamic across brokersN/A (single broker)
ControllerKRaft or ZooKeeperN/A (embedded, no election)
Log segmentsConfigurable segment size, roll on time/sizeWAL segments, S3 flush is time-based
Tiered storage APIListOffsets -4/-5Not supported; S3 is transparent
QuotasEnforced per client/userStored but not enforced

The quickest way to verify compatibility with your client:

Terminal window
# Start klite
./klite
# Run your application pointing to klite
export KAFKA_BOOTSTRAP_SERVERS=localhost:9092
# ... start your app

If you encounter a compatibility issue, check Troubleshooting or open an issue.