Ubik
Operations

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.

VariableDefaultMeaning
UBIK_STATE_MEMORY_MB1024 MiBResident aggregate-state budget before spilling to disk. Clamped to 16 TiB.
UBIK_WORKERSall hardware threadsParallel probe degree (aggregate + lookup join). Clamped to [1, 256].
UBIK_LOG_MAX_MB64 MiBRotation bound for --log-file and pipeline logs; one rotated generation, so ~2x on disk.
UBIK_SPILL_DIR$TMPDIR, else /tmpDirectory for spilled state blocks. NVMe assumed.
UBIK_SCHEMA_REGISTRY_USER / _PASSWORD / _CAConfluent 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/licenseLicense 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.

On this page