Docs/Agent/Scheduling

Scheduling Reference

Configure automated captures using cron schedules in pod and namespace annotations.


Annotation Format

Schedules are defined in the reel.io/schedule annotation using pipe-separated cron expressions and commands. Both standard 5-field cron and shorthand descriptors are supported:

# Format: <cron> | <command>
reel.io/schedule: |
@every 1h | export sbom --scanners vuln
next | export cbom
@every 1h | create layer
next | export layer
@daily | delete layer --keep-last 24

Cron Syntax

Standard 5-field cron expressions:

┌───────────── minute (0-59)
│ ┌─────────── hour (0-23)
│ │ ┌───────── day of month (1-31)
│ │ │ ┌─────── month (1-12)
│ │ │ │ ┌───── day of week (0-6, Sun=0)
* * * * *
ExpressionSchedule
0 * * * *Every hour
0 6 * * *Daily at 6 AM
*/15 * * * *Every 15 minutes
0 2 * * 1-5Weekdays at 2 AM
0 3 * * 0Weekly on Sunday at 3 AM

Shorthand descriptors:

ShorthandEquivalent
@hourly0 * * * *
@daily / @midnight0 0 * * *
@weekly0 0 * * 0
@monthly0 0 1 * *
@yearly / @annually0 0 1 1 *
@every 1hEvery hour (interval-based)
@every 30mEvery 30 minutes (interval-based)

Command Chaining

Use the next keyword to chain commands. A next command runs after its parent completes successfully.

# Create layer, then export it, then upload to S3
0 * * * * | create layer
next | export layer

Supported Commands

CommandDescription
create checkpointCRIU process state snapshot
create layerFilesystem diff capture
create frameCheckpoint + layer archive
export sbomVulnerability scan (Trivy)
export cbomCryptographic inventory
export malwareAntivirus scan (ClamAV)
export volatileRuntime state snapshot
export memoryMemory dump (ELF core)
export checkpointEphemeral checkpoint export
export layerEphemeral layer export
export frameEphemeral frame export
delete checkpointCleanup with retention
delete layerCleanup with retention
delete frameCleanup with retention

Priority & Scope

Schedules can be set at pod or namespace level. Pod annotations take priority over namespace annotations.

LevelScopePriority
Pod annotationSingle podHighest
Namespace annotationAll pods in namespaceLower

Opt out individual pods with reel.io/exclude: "true".

Concurrency Limits

The agent limits concurrent operations to prevent resource exhaustion:

SettingDefaultHelm Value
Max concurrent checkpoints3scheduler.maxConcurrentCheckpoints
Max concurrent layers2scheduler.maxConcurrentLayers
Operation timeout5 minscheduler.operationTimeoutMinutes