klite can be configured via command-line flags or environment variables. Environment variables use the KLITE_ prefix and are overridden by explicit flags.
./klite --listen :9092 --data-dir /var/lib/klite --log-level info
export KLITE_LISTEN = : 9092
export KLITE_DATA_DIR = / var / lib / klite
export KLITE_LOG_LEVEL = info
# Mixed (flags take precedence)
KLITE_LOG_LEVEL = debug ./klite --listen :9093
Flag Env Default Description --listenKLITE_LISTEN:9092Address and port to listen on. Use :9092 for all interfaces or 127.0.0.1:9092 for localhost only. --advertised-addrKLITE_ADVERTISED_ADDR(derived from —listen) Address clients use to connect. Important when running behind NAT, in Docker, or in Kubernetes. If unset, derived from the listen address. --data-dirKLITE_DATA_DIR./dataDirectory for WAL segments, metadata log, and meta.properties. Created automatically if it doesn’t exist. --cluster-idKLITE_CLUSTER_ID(auto-generated UUID) Kafka cluster ID. Auto-generated on first start and persisted in meta.properties. Set this to use a deterministic ID. --node-idKLITE_NODE_ID0Broker node ID. Reported in Metadata and FindCoordinator responses. --log-levelKLITE_LOG_LEVELinfoLog level: debug, info, warn, error.
Flag Env Default Description --default-partitionsKLITE_DEFAULT_PARTITIONS1Default number of partitions for auto-created topics. --auto-create-topicsKLITE_AUTO_CREATE_TOPICStrueAuto-create topics on Produce or Metadata requests. Set to false to require explicit topic creation.
Flag Env Default Description --s3-bucketKLITE_S3_BUCKET(none) S3 bucket for durable storage. If unset, klite runs in WAL-only mode. --s3-regionKLITE_S3_REGIONus-east-1AWS region for the S3 bucket. --s3-endpointKLITE_S3_ENDPOINT(none) Custom S3 endpoint URL. Use for MinIO, LocalStack, R2, or other S3-compatible stores. --s3-flush-intervalKLITE_S3_FLUSH_INTERVAL60sHow often to flush WAL segments to S3.
Flag Env Default Description --sasl-enabledKLITE_SASL_ENABLEDfalseEnable SASL authentication. When enabled, unauthenticated connections are rejected. --sasl-mechanismKLITE_SASL_MECHANISMPLAINSASL mechanism: PLAIN, SCRAM-SHA-256, SCRAM-SHA-512.
Flag Env Default Description --retention-msKLITE_RETENTION_MS604800000 (7 days)Default retention time for topics. -1 for infinite. --retention-bytesKLITE_RETENTION_BYTES-1 (infinite)Default per-partition size limit. --retention-check-intervalKLITE_RETENTION_CHECK_INTERVAL300sHow often to check for expired segments.
Uses all defaults: listens on :9092, stores data in ./data, auto-creates topics.
--advertised-addr kafka.example.com:9092 \
--data-dir /var/lib/klite \
--advertised-addr kafka.example.com:9092 \
--data-dir /var/lib/klite \
--s3-bucket my-klite-data \
--s3-flush-interval 60s \
--retention-ms 2592000000
docker run -p 9092:9092 \
-e KLITE_DATA_DIR=/data \
-e KLITE_DEFAULT_PARTITIONS= 3 \
-e KLITE_S3_BUCKET=my-bucket \
-e KLITE_S3_REGION=us-east-1 \
All environment variables at a glance:
Variable Corresponding Flag KLITE_LISTEN--listenKLITE_ADVERTISED_ADDR--advertised-addrKLITE_DATA_DIR--data-dirKLITE_CLUSTER_ID--cluster-idKLITE_NODE_ID--node-idKLITE_LOG_LEVEL--log-levelKLITE_DEFAULT_PARTITIONS--default-partitionsKLITE_AUTO_CREATE_TOPICS--auto-create-topicsKLITE_S3_BUCKET--s3-bucketKLITE_S3_REGION--s3-regionKLITE_S3_ENDPOINT--s3-endpointKLITE_S3_FLUSH_INTERVAL--s3-flush-intervalKLITE_SASL_ENABLED--sasl-enabledKLITE_SASL_MECHANISM--sasl-mechanismKLITE_RETENTION_MS--retention-msKLITE_RETENTION_BYTES--retention-bytesKLITE_RETENTION_CHECK_INTERVAL--retention-check-interval
AWS credentials for S3 use the standard AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, and AWS_SESSION_TOKEN environment variables (or IAM roles, instance profiles, IRSA, etc.).