Scheduled jobs
Open Conduit runs commands on a cron schedule, at fixed times, every N minutes, on code-host events, on a signed webhook or by hand.
- Each job keeps one run going and at most one waiting.
- A slot missed while the daemon was down is caught up if it is less than six hours late.
- A job can run an agent turn instead of a command: point its route at a
claude-codebinding instead of ashellone. Fix red CI on main runs one when the default branch’s checks fail.
Example config
Section titled “Example config”Each workflow is a scope in the config. The example below is a complete, minimal config that passes open-conduit config check; see configuration and secrets for what each part means.
{ "version": 1, "settings": {}, "connections": [], "scopes": [ { "id": "ops", "name": "Scheduled jobs", "secret_refs": {}, "authorization": {"connections": [], "operations": ["read_context", "declare_outcome"], "read_scopes": []}, "extensions": [ {"name": "jobs", "type": "schedule", "secret_names": [], "config": {"namespace": "schedule/ops", "scope": "ops", "jobs": [ {"name": "nightly-report", "cron": "0 7 * * *", "time_zone": "Europe/London"}, {"name": "refresh", "every_minutes": 60} ]}} ], "routes": [ {"name": "report", "handler": "schedule", "binding": "report", "active_policy": "queue", "config": {"jobs": ["nightly-report"]}}, {"name": "refresh", "handler": "schedule", "binding": "refresh", "active_policy": "queue", "config": {"jobs": ["refresh"]}} ], "bindings": [ {"name": "report", "executor": "shell", "requires": {"toolbelt": "cli"}, "operations": ["read_context", "declare_outcome"], "secret_names": [], "config": {"command": "./scripts/nightly-report.sh", "dir": "/path/to/repo"}}, {"name": "refresh", "executor": "shell", "requires": {"toolbelt": "cli"}, "operations": ["read_context"], "secret_names": [], "config": {"command": "make refresh", "dir": "/path/to/repo"}} ] } ]}Run a job by hand
Section titled “Run a job by hand”open-conduit events emit --scope ops --type schedule.run --delivery-id run-1 --key-source schedule/ops --key-external-id job/nightly-reportSee scheduled jobs for every trigger.