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. The next keyword chains a command after the one above it (see Command Chaining below).
Cron Syntax
Standard 5-field cron expressions:
| Expression | Schedule |
|---|---|
| 0 * * * * | Every hour |
| 0 6 * * * | Daily at 6 AM |
| */15 * * * * | Every 15 minutes |
| 0 2 * * 1-5 | Weekdays at 2 AM |
| 0 3 * * 0 | Weekly on Sunday at 3 AM |
Shorthand descriptors:
| Shorthand | Equivalent |
|---|---|
| @hourly | 0 * * * * |
| @daily / @midnight | 0 0 * * * |
| @weekly | 0 0 * * 0 |
| @monthly | 0 0 1 * * |
| @yearly / @annually | 0 0 1 1 * |
| @every 1h | Every hour (interval-based) |
| @every 30m | Every 30 minutes (interval-based) |
Command Chaining
Use the next keyword to chain commands. A next command runs after its parent completes successfully.
Supported Commands
| Command | Description |
|---|---|
| create checkpoint | CRIU process state snapshot |
| create layer | Filesystem diff capture |
| create frame | Checkpoint + layer archive |
| upload sbom | Vulnerability scan (Trivy), uploaded to S3 |
| upload cbom | Cryptographic inventory, uploaded to S3 |
| upload malware | Antivirus scan (ClamAV), uploaded to S3 |
| upload volatile | Runtime state snapshot, uploaded to S3 |
| upload memory | Memory dump (ELF core), uploaded to S3 |
| upload checkpoint | Ephemeral checkpoint, uploaded to S3 |
| upload layer | Ephemeral layer, uploaded to S3 |
| upload frame | Ephemeral frame, uploaded to S3 |
| delete checkpoint | Cleanup with retention (--older-than, --filter) |
| delete layer | Cleanup by ID |
| delete frame | Cleanup by ID |
Priority & Scope
Schedules can be set at pod or namespace level. When settings collide, the most specific wins: CLI flags > pod annotations > namespace annotations. This same precedence governs S3 settings.
| Level | Scope | Priority |
|---|---|---|
| Pod annotation | Single pod | Highest |
| Namespace annotation | All pods in namespace | Lower |
Opt out individual pods with reel.io/exclude: "true".
Concurrency Limits
The agent caps concurrent operations so captures don't starve the node:
| Setting | Default | Helm Value |
|---|---|---|
| Max concurrent checkpoints | 3 | scheduler.maxConcurrentCheckpoints |
| Max concurrent layers | 2 | scheduler.maxConcurrentLayers |
| Operation timeout | 5 min | scheduler.operationTimeoutMinutes |