GridWork HQ
Cron Jobs

Cron Configuration

Configure and manage the 12 built-in cron jobs — schedules, models, quiet hours, and more.

Cron Configuration

All cron jobs are defined in pipeline-server/cron-config.json. The scheduler reads this file on startup.

Config Format

{
  "jobs": [
    {
      "id": "my-job",
      "title": "My Job",
      "description": "What this job does.",
      "schedule": "0 */6 * * *",
      "task_folder": "my-job",
      "agent_instruction": "Read TASK_DESCRIPTION.md and complete the task.",
      "enabled": true,
      "model": "sonnet",
      "quiet_start": 23,
      "quiet_end": 7,
      "transport": "tg",
      "type": null
    }
  ]
}

Field Reference

FieldTypeRequiredDescription
idstringYesUnique identifier (lowercase, hyphens). Must match /^[a-z0-9_-]+$/.
titlestringNoHuman-readable name shown in the dashboard. Falls back to id.
schedulestringYesCron expression (e.g., "0 */6 * * *" = every 6 hours).
descriptionstringNoShown in the Cron Dashboard page.
task_folderstringNoFolder containing TASK_DESCRIPTION.md for Claude-powered jobs.
agent_instructionstringNoInstruction passed to Claude when the job runs.
commandstringNoShell command for type: "shell" jobs. Mutually exclusive with task_folder.
enabledbooleanNoWhether the job is active. Defaults to true.
modelstringNoClaude model: "haiku", "sonnet", "opus". Null for shell jobs.
providerstringNoModel provider override. Usually null.
transportstringNoNotification channel: "tg" (Telegram).
quiet_startnumberNoUTC hour to start quiet period (no execution).
quiet_endnumberNoUTC hour to end quiet period.
dependencystringNoID of a job that must complete first.
typestringNoSet to "shell" for shell command jobs.
reasoning_effortstringNoModel reasoning effort override.
cli_parametersarrayNoAdditional CLI flags passed to Claude.

Common Cron Expressions

ExpressionSchedule
0 */6 * * *Every 6 hours
0 9 * * *Daily at 9:00 AM UTC
0 9 * * 1-5Weekdays at 9:00 AM UTC
0 17 * * 5Fridays at 5:00 PM UTC
0 2 * * *Daily at 2:00 AM UTC
*/30 * * * *Every 30 minutes

The 12 Built-In Jobs

The default cron-config.json includes 12 jobs covering operations, maintenance, and notifications. The exact jobs depend on your configuration, but the standard set includes:

AI-Powered Jobs

These spawn Claude sessions to perform intelligent tasks:

JobTypical ScheduleModelPurpose
kb-librarianEvery 12 hoursHaikuAudit and maintain the knowledge vault
archive-outputsDailyHaikuArchive old pipeline output files
friday-updateFriday afternoonOpusDraft weekly client update emails
scope-auditWeeklyOpusCheck for scope creep on active projects
morning-briefingWeekday morningsSonnetDaily operations summary

Shell Jobs

These run shell scripts without Claude:

JobTypical SchedulePurpose
email-syncEvery 30 minutesSync email via himalaya CLI
push-activityEvery hourPush activity data to the dashboard
todo-syncEvery 6 hoursSync parsed TODOs to the dashboard
offsite-backupDaily at 2 AMBackup to Backblaze B2 via rclone

Shell jobs use "type": "shell" and "command" instead of task_folder.

Adding a New Cron Job

  1. Add the job entry to pipeline-server/cron-config.json
  2. For AI jobs: create a task folder with TASK_DESCRIPTION.md
  3. For shell jobs: create the script in $SCRIPTS_DIR and make it executable
  4. Restart the pipeline server
  5. Verify in the Cron Dashboard

Shell Job Example

{
  "id": "db-backup",
  "title": "Database Backup",
  "schedule": "0 2 * * *",
  "command": "bash ${SCRIPTS_DIR}/backup-db.sh",
  "enabled": true,
  "model": null,
  "type": "shell",
  "transport": "tg"
}

Quiet Hours

Each job can define a quiet window using quiet_start and quiet_end (UTC hours). During this window, scheduled executions are silently skipped. For example, "quiet_start": 23, "quiet_end": 7 skips executions between 11 PM and 7 AM UTC.

Manual Trigger

Run any job immediately:

curl -X POST http://localhost:8750/crons/JOB_ID/run \
  -H "Authorization: Bearer YOUR_PIPELINE_SERVER_TOKEN"

Shell Script Permissions

Shell-type cron jobs need executable scripts:

chmod +x ~/agency-workspace/.scripts/*.sh
chmod +x ~/agency-workspace/knowledge/system/scripts/*.sh

On this page