{
"description": "Standard remediation for OOMKill: raise the memory limit to 2Gi and restart",
"trigger": {
"signalType": "oom_kill",
"severity": "high",
"resourceKind": "Deployment"
},
"steps": [
{
"name": "raise-memory-limit",
"action": "AdjustResources",
"description": "Raise the container memory limit",
"params": {
"memory_limit": "2Gi"
}
},
{
"name": "restart",
"action": "RestartDeployment",
"description": "Restart pods to reclaim memory"
}
]
}
{
"apiVersion": "v1",
"kind": "Runbook",
"spec": {
"name": "oomkill-standard",
"namespace": "production",
"description": "Standard remediation for OOMKill: raise the memory limit to 2Gi and restart",
"trigger": {
"signalType": "oom_kill",
"severity": "high",
"resourceKind": "Deployment"
},
"steps": [
{
"name": "raise-memory-limit",
"action": "AdjustResources",
"description": "Raise the container memory limit",
"params": {
"memory_limit": "2Gi"
}
},
{
"name": "restart",
"action": "RestartDeployment",
"description": "Restart pods to reclaim memory"
}
],
"maxAttempts": 3,
"creationTimestamp": "2026-01-10T08:00:00Z"
},
"resourceMeta": {
"name": "oomkill-standard",
"namespace": "production",
"uid": "3c4d5e6f-7a8b-4c9d-8e0f-1a2b3c4d5e6f",
"creationTimestamp": "2026-01-10T08:00:00Z"
}
}
Update Runbook
Replaces the definition of an existing Runbook
{
"description": "Standard remediation for OOMKill: raise the memory limit to 2Gi and restart",
"trigger": {
"signalType": "oom_kill",
"severity": "high",
"resourceKind": "Deployment"
},
"steps": [
{
"name": "raise-memory-limit",
"action": "AdjustResources",
"description": "Raise the container memory limit",
"params": {
"memory_limit": "2Gi"
}
},
{
"name": "restart",
"action": "RestartDeployment",
"description": "Restart pods to reclaim memory"
}
]
}
{
"apiVersion": "v1",
"kind": "Runbook",
"spec": {
"name": "oomkill-standard",
"namespace": "production",
"description": "Standard remediation for OOMKill: raise the memory limit to 2Gi and restart",
"trigger": {
"signalType": "oom_kill",
"severity": "high",
"resourceKind": "Deployment"
},
"steps": [
{
"name": "raise-memory-limit",
"action": "AdjustResources",
"description": "Raise the container memory limit",
"params": {
"memory_limit": "2Gi"
}
},
{
"name": "restart",
"action": "RestartDeployment",
"description": "Restart pods to reclaim memory"
}
],
"maxAttempts": 3,
"creationTimestamp": "2026-01-10T08:00:00Z"
},
"resourceMeta": {
"name": "oomkill-standard",
"namespace": "production",
"uid": "3c4d5e6f-7a8b-4c9d-8e0f-1a2b3c4d5e6f",
"creationTimestamp": "2026-01-10T08:00:00Z"
}
}
oomkill-standard)description, trigger and steps are always overwritten with what you send (an omitted field becomes empty, and an empty trigger is rejected by the CRD). Only maxAttempts (when greater than 0) and labels (when present) are optional. name and namespace in the body are ignored.
Show Trigger properties
Show Trigger properties
oom_kill, crashloop_backoff, error_rate, latency, pod_restart, cpu_high, memory_high, disk_pressure, image_pull_error (full list in the Anomaly CRD enum)critical, high, medium or lowDeployment, StatefulSet, DaemonSet, Job, CronJobShow Step properties
Show Step properties
AdjustResources, RestartDeployment, ScaleDeployment, RollbackDeployment, ExecDiagnostic{"memory_limit": "1Gi"}, {"replicas": "5"}){
"description": "Standard remediation for OOMKill: raise the memory limit to 2Gi and restart",
"trigger": {
"signalType": "oom_kill",
"severity": "high",
"resourceKind": "Deployment"
},
"steps": [
{
"name": "raise-memory-limit",
"action": "AdjustResources",
"description": "Raise the container memory limit",
"params": {
"memory_limit": "2Gi"
}
},
{
"name": "restart",
"action": "RestartDeployment",
"description": "Restart pods to reclaim memory"
}
]
}
{
"apiVersion": "v1",
"kind": "Runbook",
"spec": {
"name": "oomkill-standard",
"namespace": "production",
"description": "Standard remediation for OOMKill: raise the memory limit to 2Gi and restart",
"trigger": {
"signalType": "oom_kill",
"severity": "high",
"resourceKind": "Deployment"
},
"steps": [
{
"name": "raise-memory-limit",
"action": "AdjustResources",
"description": "Raise the container memory limit",
"params": {
"memory_limit": "2Gi"
}
},
{
"name": "restart",
"action": "RestartDeployment",
"description": "Restart pods to reclaim memory"
}
],
"maxAttempts": 3,
"creationTimestamp": "2026-01-10T08:00:00Z"
},
"resourceMeta": {
"name": "oomkill-standard",
"namespace": "production",
"uid": "3c4d5e6f-7a8b-4c9d-8e0f-1a2b3c4d5e6f",
"creationTimestamp": "2026-01-10T08:00:00Z"
}
}
{
"apiVersion": "v1",
"kind": "Error",
"error": "Not Found",
"code": 404,
"message": "runbook not found: runbooks.platform.chatcli.io \"oomkill-standard\" not found"
}
Authorizations
API key sent in the X-API-Key header. Keys are read from the Secret chatcli-operator-secrets, key api-keys (fallback: ConfigMap chatcli-operator-config, key api-keys) in the operator namespace, as a YAML list of {key, role, name, description} (name is the identity recorded on approval decisions); the operator chart creates it only with apiKeys.create: true. Roles: viewer < operator < admin — any other role string is denied everywhere. Changes are picked up within about 30 seconds; deleting both the Secret and the ConfigMap revokes every key. With no keys configured every /api/ call returns 401, unless CHATCLI_OPERATOR_DEV_MODE=true, which grants admin without a key (development only).
Path Parameters
Runbook name.
"oom-standard"
Query Parameters
Namespace of the object. Defaults to default — pass it for objects in any other namespace.
Body
Required on create; ignored on update.
"oom-standard"
Create only; ignored on update.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Defaults to 3 on create; on update only values > 0 are applied.
Show child attributes
Show child attributes