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 | upload sbom --scanners vuln
next | upload cbom
@every 1h | create layer
next | upload 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 upload it to S3
0 * * * * | create layer
next | upload layer

Supported Commands

CommandDescription
create checkpointCRIU process state snapshot
create layerFilesystem diff capture
create frameCheckpoint + layer archive
upload sbomVulnerability scan (Trivy), uploaded to S3
upload cbomCryptographic inventory, uploaded to S3
upload malwareAntivirus scan (ClamAV), uploaded to S3
upload volatileRuntime state snapshot, uploaded to S3
upload memoryMemory dump (ELF core), uploaded to S3
upload checkpointEphemeral checkpoint, uploaded to S3
upload layerEphemeral layer, uploaded to S3
upload frameEphemeral frame, uploaded to S3
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