Kauldron, a new JAX training library from Google Research, treats configuration files as plain dictionaries that can be saved and loaded as JSON. The system separates setup from execution by using string-based keys to connect components, avoiding the circular imports that usually break complex pipelines. A built-in runtime checker validates shapes and named axes, reporting exactly where a mismatch occurs. The tutorial installs the library, applies a necessary compatibility patch for the current JAX version, and then demonstrates these features by training a model on synthetic data.
In this article
Installation and setup
The first step installs kauldron version 1.4.2 and applies a two-line patch to fix an AttributeError caused by changes in the JAX source code. The patch ensures that the library can inspect array data types without crashing. Once installed, the environment runs on CPU only, as the tutorial generates its own data in memory rather than downloading a dataset.
Config as a call tree
The konfig module allows developers to build experiment settings using standard Python calls. Importing a library like Optax inside a konfig block creates a ConfigDict object instead of the actual optimizer. This object holds the function name and arguments as data. Changing a value in the dictionary is possible before the final resolution step. When the system resolves the configuration, it executes the stored calls to produce the real objects.
The tutorial shows that an Optax chain of optimizers serialises to JSON perfectly. The system rebuilds the chain from the JSON string without any modification to the Optax library itself.
There is no base class or registry involved in this process. The library relies entirely on the structure of the dictionaries.
References for shared values
Configuration files often fail when a single value is needed in multiple places, such as the total number of training steps. Kauldron solves this with the .ref mechanism. A developer can point a learning rate schedule to a variable, like num_train_steps, rather than hardcoding the number. If the variable changes from 1000 to 200, the schedule recalculates automatically. Without this feature, the schedule would freeze the original number, leading to incorrect training curves that might not trigger an error during execution.
String-based wiring
The kontext module connects model components using string paths instead of direct imports. This prevents libraries from depending on each other in a way that breaks when one is updated. The system treats context as nested data structures. A developer accesses specific parts of the data by entering a path, such as batch.image, to retrieve a tensor. This approach keeps the logic separate from the data retrieval.
What it means
For researchers, this setup removes the need to manage complex dependency graphs. The ability to treat configs as JSON means experiments can be versioned and shared easily. The runtime shape checker catches errors early, saving time during debugging. The string-based wiring ensures that swapping out components does not break the entire pipeline.




