Compiles are run by the clsi service inside every Ayakaleaf Pro pod. With sandboxed compiles on, clsi asks the Docker Engine of the node the pod runs on to start a TeX Live container for each compile, and hands it the project’s directory by its path on that node. How sandboxing works and which images exist is described in Sandboxed Compiles.
Configuration
The installation sets everything up: Docker and the images on the nodes in 0. Prepare the nodes, the settings in 4. Personalizing your instance and the volumes in 5. Deploy Ayakaleaf Pro. The settings, all in the ConfigMap:
Adding a TeX Live version
Pull the image on every node
The Toolkit pulls the images itself; on Kubernetes nobody does. Pull into Docker, not with crictl: clsi asks Docker for the image. A compile with an image that is missing on the node fails. List it in the ConfigMap and restart
A node added to the cluster later needs Docker and all the images before Ayakaleaf Pro runs there. Label such nodes and keep Ayakaleaf Pro on them with a nodeSelector if not every node qualifies.
Several replicas
Each replica compiles on its own node and keeps the compile output there, so a user must stay on the replica that compiled, which the load balancer’s sticky cookie ensures. Never run two replicas on the same node: they would share the node’s compile directories. The Horizontal scaling setup prevents this with podAntiAffinity.
The TeX Live containers run beside the pod, outside its memory limit and outside the scheduler’s view. Leave memory free on the nodes for them, see 0. Prepare the nodes.
Tested on Kubernetes
On Kubernetes 1.37 with three replicas behind HAProxy, one per node, and TeX Live 2026 and 2025 pulled into Docker on every node, our end-to-end tests for sandboxed compiles pass (7 cases): a new project compiles to a PDF, the compiler settings offer both images and switch between them, XeLaTeX with fontspec, LaTeX errors and recompiling after the fix, stopping a running compile, and SyncTeX in both directions. A load test with 12 users compiling a 600-page document at the same time ran 4 compiles per node, see What to expect. Last modified on November 2, 2026