Configuration
The environment variables the engine reads, from worker count and the state-memory budget to the spill and log directories, plus Schema Registry credentials and the Kafka property pass-through.
ubik is configured by environment, not a config file. The engine reads the same
variables whether it runs as ubik, as a pipeline's supervised engine, or
in-process through libubik, so a query behaves identically across all three.
| Variable | Default | Meaning |
|---|---|---|
UBIK_STATE_MEMORY_MB | 1024 MiB | Resident aggregate-state budget before spilling to disk. Clamped to 16 TiB. |
UBIK_WORKERS | all hardware threads | Parallel probe degree (aggregate + lookup join). Clamped to [1, 256]. |
UBIK_LOG_MAX_MB | 64 MiB | Rotation bound for --log-file and pipeline logs; one rotated generation, so ~2x on disk. |
UBIK_SPILL_DIR | $TMPDIR, else /tmp | Directory for spilled state blocks. NVMe assumed. |
UBIK_SCHEMA_REGISTRY_USER / _PASSWORD / _CA | — | Confluent Schema Registry credentials and CA. Never put credentials in the URL. |
UBIK_KAFKA_<PROP> | — | Any librdkafka property: UBIK_KAFKA_SASL_USERNAME -> sasl.username. Offsets, isolation and transactions are engine-owned and rejected. |
UBIK_LICENSE | ~/.ubik/license | License key. Reports usage, never gates. |
This table is generated from the engine, so it is the set this version reads.
Kafka properties
Any librdkafka property is set by prefixing it with UBIK_KAFKA_, uppercased,
with . written as _: UBIK_KAFKA_SASL_USERNAME becomes sasl.username. This
is the whole librdkafka surface (TLS, SASL, OAUTHBEARER), with no bespoke subset.
The properties the engine owns for exactly-once (offsets, isolation,
transactions) are reserved and rejected if set. See
Kafka security.
Per-run overrides
Worker count, state-memory budget and spill directory can also be set per run
through the C ABI and the Python binding (workers, state_memory_mb,
spill_dir), which override the environment for that engine. See the
Python quickstart.
Pipeline state
A pipeline's files (definition, checkpoint, log) live under
$UBIK_HOME/pipelines/<name>/, where UBIK_HOME defaults to $HOME/.ubik. This
is a CLI setting, read by ubik pipeline, not the engine. See
pipelines.