Skip to main content

Run Your Own Intelligence Function

An Intelligence Function is written against the CU-IP substrate (Write an Intelligence Function); this page puts one into a running Racora.

A function ships inside the CU-IP image. Build a cuip image that carries yours (the guide's checklist covers how it registers), then point the chart at it and enable it: racora-cu.cuIp.image.repository and image.tag name the image, which must live in the registry every image is pulled from (global.systemDefaultRegistry), so a registry you can push to means re-rooting the whole release image set to it first (Use Your Own Registry or Install Offline); build it from the cuip repository as its pipeline does, docker buildx build --build-context rann-core=rann_core -f substrate/Dockerfile -t <registry>/cuip:<tag> --push substrate; racora-cu.cuIp.engines lists the functions to run (default pci,anr), and racora-cu.cuIp.engineConfig carries per-function settings. On the k3s platform these go in the HelmChartConfig, with plain helm in your values file (Override Chart Values, the racora-cu values).

What the controller does with a new function's decisions has limits (How Decisions Become Network State): the target must be a spec.* field of the NRCell; the confidence and stabilization gates apply to every function, but the live-value check covers pci and anr only; and a function without a post-apply policy in the controller gets its field patched with no cell lock, rollout wait or unlock, so a field whose change rolls the DU needs a policy registered in the controller. The guide's last checklist step is that check. To see it run: kubectl -n centralized-unit logs deploy/cuip names each function as it evaluates, an unknown name in engines fails the pod at start, and a decision the controller applied is recorded in the cell's status.lastApplied (NRCell Status and Conditions).