Skip to content

Configuration

klite can be configured via command-line flags or environment variables. Environment variables use the KLITE_ prefix and are overridden by explicit flags.

Terminal window
# Flags
./klite --listen :9092 --data-dir /var/lib/klite --log-level info
# Environment variables
export KLITE_LISTEN=:9092
export KLITE_DATA_DIR=/var/lib/klite
export KLITE_LOG_LEVEL=info
./klite
# Mixed (flags take precedence)
KLITE_LOG_LEVEL=debug ./klite --listen :9093
FlagEnvDefaultDescription
--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.
FlagEnvDefaultDescription
--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.
FlagEnvDefaultDescription
--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.
FlagEnvDefaultDescription
--sasl-enabledKLITE_SASL_ENABLEDfalseEnable SASL authentication. When enabled, unauthenticated connections are rejected.
--sasl-mechanismKLITE_SASL_MECHANISMPLAINSASL mechanism: PLAIN, SCRAM-SHA-256, SCRAM-SHA-512.
FlagEnvDefaultDescription
--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.
Terminal window
./klite

Uses all defaults: listens on :9092, stores data in ./data, auto-creates topics.

Terminal window
./klite \
--listen 0.0.0.0:9092 \
--advertised-addr kafka.example.com:9092 \
--data-dir /var/lib/klite \
--default-partitions 6 \
--log-level info \
--retention-ms 604800000
Terminal window
./klite \
--listen 0.0.0.0:9092 \
--advertised-addr kafka.example.com:9092 \
--data-dir /var/lib/klite \
--default-partitions 6 \
--s3-bucket my-klite-data \
--s3-region us-west-2 \
--s3-flush-interval 60s \
--retention-ms 2592000000
Terminal window
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 \
-v klite-data:/data \
ghcr.io/klaudworks/klite
config:
listenAddr: ":9092"
dataDir: "/data"
logLevel: "info"
defaultPartitions: 6
autoCreateTopics: true
s3:
enabled: true
bucket: my-klite-data
region: us-west-2

All environment variables at a glance:

VariableCorresponding Flag
KLITE_LISTEN--listen
KLITE_ADVERTISED_ADDR--advertised-addr
KLITE_DATA_DIR--data-dir
KLITE_CLUSTER_ID--cluster-id
KLITE_NODE_ID--node-id
KLITE_LOG_LEVEL--log-level
KLITE_DEFAULT_PARTITIONS--default-partitions
KLITE_AUTO_CREATE_TOPICS--auto-create-topics
KLITE_S3_BUCKET--s3-bucket
KLITE_S3_REGION--s3-region
KLITE_S3_ENDPOINT--s3-endpoint
KLITE_S3_FLUSH_INTERVAL--s3-flush-interval
KLITE_SASL_ENABLED--sasl-enabled
KLITE_SASL_MECHANISM--sasl-mechanism
KLITE_RETENTION_MS--retention-ms
KLITE_RETENTION_BYTES--retention-bytes
KLITE_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.).