~/.operator/jobs/<name>/JOB.md.
Job Format
Model Override
Setmodel in the frontmatter to override the agent’s configured model for this job. Uses LiteLLM format (provider/model-name). When omitted, the agent’s model chain from operator.yaml is used.
This is useful for running cheaper models on simple recurring tasks:
Hooks
| Hook | Description |
|---|---|
prerun | Gate script — non-zero exit skips LLM execution. |
postrun | Receives model output on stdin. |
| Variable | Description |
|---|---|
JOB_NAME | Name of the job being executed |
OPERATOR_AGENT | Agent running the job |
OPERATOR_HOME | Path to ~/.operator |
OPERATOR_DB | Path to the SQLite database |
Posting Results
The agent usessend_message to post results to Slack channels. The prompt body should include posting instructions (which channels, whether to thread, etc.). If there’s nothing to post, simply don’t call send_message.
Job Counters
Each job tracks four counters in SQLite:| Counter | Incremented when |
|---|---|
run_count | LLM actually executed (success or error) |
error_count | LLM ran but threw an exception |
gate_count | prerun hook returned non-zero (job skipped) |
skip_count | Cron fired but the previous run was still in progress |

