Skip to main content
A control plane is a supervisor that decides what to do about one event at a time. Where a supervisor may keep state and emit any commands, a control plane answers a single question per event: nothing, pause, or stop. Control planes are optional and off until enabled. They share the hosting, auditing and rate limiting of supervisors. Three control planes are built in.

Rule control plane

Uses the format described in Rule files:

Model control plane

For each event the model is asked a question with a fixed set of answers. Each answer maps to a command: nothing (NONE), pause the workflow (PAUSE) or drain and stop it (STOP). It acts only when it is sure. An answer less probable than the minimum probability, an unknown answer, a failing or slow model and an unreadable reply all count as no opinion, so the model can never hold up the control bus. By default it can only pause; a stop has to be configured.
The default answers are continue (normal operation, a success, a retry that may still succeed, or an execution that already finished) and pause (repeated failures, exhausted retries, authentication errors or resource exhaustion that will not fix themselves, so a person must look). Write option descriptions explicitly: a small model needs them.

Rules-first control plane

Combines both. Rules decide first; the model is asked only when no rule fired. Use it to handle the cases you can state exactly with rules and leave the long tail to the model. It takes the rules file and the same model.* settings under its own prefix:

Choosing

Writing your own

A control plane implements one operation: decide what to do about an event, within a bounded time. An error counts as no opinion. See Writing a plugin.