Skip to content

Scheduled Jobs Registry

All recurring automated tasks running on the Mac Studio, split between launchd (runs scripts directly, zero AI cost) and OpenClaw crons (runs through an AI agent session).

Last updated: 2026-04-09

Migration Status Key

  • Migrated -- now running as launchd, OpenClaw cron disabled
  • 🔜 Candidate -- just wraps a script, should move to launchd
  • 🧠 Needs AI -- legitimately requires an LLM agent session
  • Disabled -- turned off, not actively used

LaunchD Services (Zero Token Cost)

These run scripts directly via macOS launchd. Logs go to /tmp/<name>.log. Failures alert Apple via Telegram.

Infrastructure & Pipeline

ServicePlistScriptSchedulePurpose
Gatewayai.openclaw.gateway.plistOpenClaw gatewayAlways onCore OpenClaw gateway process
Pipeline Worker 1com.ari.pipeline-flow.plistpipeline_flow.py --continuousAlways onPrimary YouTube pipeline worker
Pipeline Worker 2com.ari.pipeline-flow-worker2.plistpipeline_flow.py --continuousAlways onParallel pipeline worker
Pipeline Healthcom.ari.pipeline-health.plistpipeline_health_check.pyEvery 15 minAuto-restarts dead pipeline processes
Pipeline Dashboardcom.ari.pipeline-dashboard.plistupdate_pipeline_dashboard.pyEvery 15 minPort 3457
Ari Dashboardcom.ari.dashboard-update.plistupdate_ari_dashboard.pyEvery 15 minPort 3458
Mission Control Collectorcom.mission-control.collector.plistMission Control collectorEvery 60 secPushes crons, agents, pipeline, token usage to Convex
Overnight Monitorcom.ari.overnight-monitor.plistovernight monitorOvernightMonitors overnight processes

Data & Sync

ServicePlistScriptSchedulePurpose
✅ Daily Backupcom.ari.daily-backup.plistlaunchd_daily_backup.shDaily 3am CTGit commit + push workspace, snapshot data directory
✅ Revenue Collectorcom.ari.revenue-collector.plistlaunchd_revenue_collector.shDaily 6:10am CTPull YTD revenue from Close, Impact, RedVentures, AdsByMoney, MSN; post to Convex
✅ Creator Airtable Synccom.ari.creator-airtable-sync.plistlaunchd_creator_airtable_sync.sh7:05am, 9:05pm CTSync creators to media kits app (headshots, slugs, Airtable URLs)
✅ Sync Close Creator Choicescom.ari.sync-close-creator-choices.plistlaunchd_sync_close_creator_choices.shDaily 3am CTSync creator names to Close CRM custom fields
✅ Brand DB Nightly Mergecom.ari.brand-db-nightly-merge.plistlaunchd_brand_db_nightly_merge.shDaily 3:15am CTMerge sponsor detection data into brand database
✅ Sponsor Pipeline Alertcom.ari.sponsor-pipeline-alert.plistlaunchd_sponsor_pipeline_alert.shDaily 3:25am CTCheck for new sponsor detections, alert on issues
✅ Daily Channel Discoverycom.ari.daily-channel-discovery.plistlaunchd_daily_channel_discovery.shDaily 3:45am CTDiscover new YouTube channels via search + related
Apple Email Scancom.ari.apple-email-scan.plistapple_email_scan.pyEvery 30 minRule-based email archive
Channel Discoverycom.ari.channel-discovery.plistchannel discoveryScheduledYouTube channel discovery
Sponsor Detectioncom.ari.sponsor-detect-continuous.plistsponsor detectionAlways onContinuous sponsor detection in videos
Step 4B Ongoingcom.ari.step4b-ongoing.pliststep 4bAlways onPipeline step 4b processing
Creator Enrichmentcom.axel.creator-enrichment.plistcreator enrichmentScheduledEnrich creator data
Sync Brand Emailscom.axel.sync-brand-emails.plistsync brand emailsScheduledSync brand email data
Sync TikTok/IGcom.axel.sync-tiktok-ig-apiless.plistTikTok/IG syncScheduledSync TikTok and Instagram data without API
Annie Outreach Syncco.creatorsagency.annie-outreach-sync.plistoutreach syncScheduledSync Annie's outreach data
Check Email Sentcom.arlo.check-email-sent.plistemail sent checkerScheduledVerify emails were sent

Axel Services

ServicePlistScriptSchedulePurpose
Calendar Synccom.axel.calendar-sync.plistcalendar syncScheduledSync calendar data
Cron Activity Synccom.axel.cron-activity-sync.plistcron activity syncScheduledSync cron activity data
Memory Docs Synccom.axel.memory-docs-sync.plistmemory docs syncScheduledSync memory documents
Memory Indexercom.axel.memory-indexer.plistmemory indexerScheduledIndex memory files
Scoring Bridgecom.axel.scoring-bridge.plistscoring bridgeScheduledBridge scoring data

Cal.com & Slack

ServicePlistScriptSchedulePurpose
Cal.com Health Monitorcom.openclaw.calcom-health-monitor.plisthealth monitorScheduledMonitor Cal.com integration health
Cal.com Mini Proxycom.openclaw.calcom-mini-proxy.plistmini proxyAlways onProxy Cal.com requests through Mini
Cal.com Slack Notifycom.openclaw.calcom-slack-notify.plistSlack notifyWebhookNotify Slack of new Cal.com bookings
Arlo Slack Keepaliveai.openclaw.arlo-slack-keepalive.plistkeepalivePeriodicKeep Arlo's Slack socket alive
Vercel Healthco.creatorsagency.vercel-health.plisthealth checkScheduledMonitor Vercel deployments

Memory & Code Factory

ServicePlistScriptSchedulePurpose
Memory Write Daemoncom.creatorsagency.memory-write-daemon.plistmemory writeAlways onMemory write daemon
Memory Write Servercom.creatorsagency.memory-write-server.plistmemory write serverAlways onMemory write HTTP server
Code Factory Hourlycom.codefactory.hourly.plistcode_factory.pyEvery 60 minCode Factory main orchestrator
Code Factory Weeklycom.codefactory.weekly.plistcode_factory_planning.pyWeeklyCode Factory mission planning
Agent Daily Digestco.creatorsagency.agent-daily-digest.plistdaily digestDailyAgent digest compilation

OpenClaw Crons (AI Agent Sessions)

These wake up an AI agent, which reads the prompt and executes it. Each run costs API tokens.

Heartbeats (Agent Check-ins)

CronAgentSchedulePurpose
ari-heartbeatAri (main)⛔ DisabledDisabled — HEARTBEAT.md was empty, every run was a no-op
arlo-heartbeatArlo9:05am, 5:05pm CTReduced from 4x to 2x/day (webhook check + handoffs)
axel-heartbeatAxel10:10am, 2:10pm, 6:10pm CTCheck pending-work.md, pick up tasks

Memory & Context

CronAgentSchedulePurpose
memory-filingmain9am, 12pm, 5pm, 9pm CT✅ Migrated to launchd (keyword routing + Haiku API)
axel-memory-filingaxel9:30am, 12:30pm, 5:30pm, 9:30pm CT✅ Migrated to launchd (Slack pull + Haiku API)
arlo-memory-filingarlo9:30am, 12:30pm, 5:30pm, 9:30pm CT✅ Migrated to launchd (Slack pull + Haiku API)
nightly-log-condensemain10:45pm CT✅ Migrated to launchd (Haiku API for summarization)
context-pruningmainWeekly Sun 10pmMove completed items to archive
axel-context-pruningaxelWeekly Sun 10pmSame for Axel
arlo-context-pruningarloWeekly Sun 10pmSame for Arlo

Blog Factory (✅ All migrated to launchd)

CronAgentSchedulePurpose
ca-blog-article-1 through 5main11pm CT daily✅ Migrated — now com.creatorsagency.blog-ca-daily.plist
mm-blog-article-1 through 5main12am CT daily✅ Migrated — now com.creatorsagency.blog-mm-daily.plist
ca-blog-weeklymainWeekly Mon 8am✅ Migrated — now com.creatorsagency.blog-ca-weekly.plist
mm-blog-weeklymainWeekly Mon 8:30am✅ Migrated — now com.creatorsagency.blog-mm-weekly.plist
blog-count-monitormainDaily 11am CT✅ Migrated — now com.creatorsagency.blog-count-monitor.plist
blog-assumption-reviewmainDaily 7:30am CT✅ Migrated — now com.creatorsagency.blog-assumption-review.plist

Sales & CRM (Arlo)

CronAgentSchedulePurpose
fathom-proposal-writerarlo✅ Event-drivenReplaced 30-min polling with file watcher daemon (com.arlo.fathom-proposal-watcher.plist) — triggers only when proposals queued
close-duplicate-scanarloDaily 7am CT✅ Migrated to launchd (script-based, no AI)
creator-wishlist-scannerarloDaily 8pm CT✅ Migrated to launchd (script-based)
arlo-feedback-processorarloDaily 9pm CTSwitched from OpenAI GPT-4o to Anthropic Haiku
arlo-template-learningarlo⛔ DisabledScrapped — not being used
arlo-template-reviewarlo⛔ DisabledTurned off — not needed
proposal-learning-monitorarlo⛔ DisabledAlready disabled
daily-agent-standuparloWeekdays 9pm CT✅ Migrated to launchd (script-based aggregation, no AI)

Standups & Briefings

CronAgentSchedulePurpose
ari-daily-standupmainWeekdays 8:45pm CTWrite daily standup
arlo-daily-standuparloWeekdays 8:45pm CTWrite daily standup
axel-daily-standupaxelWeekdays 8:45pm CTWrite daily standup
axel-morning-standupaxelWeekdays 9am CT✅ Migrated to launchd (script reads pending-work.md, posts to Slack, no AI)
aaron-daily-briefingmainWeekdays 10am CTReduced from 7 days to weekdays only
daily-meeting-briefsarloDaily 6am CTPull calendar, DM agents meeting prep

Data & Pipeline

StatusCronAgentSchedulePurpose
creator-airtable-syncmain7am, 9pm CTMigrated to launchd
creator-topic-enrichmentmainDaily 4am CTMigrated to launchd
new-creator-monitormain6x/day (8am-6pm)Migrated to launchd
sync-close-creator-choicesmainDaily 3am CTMigrated to launchd
brand-db-nightly-mergenoneDaily 3:15am CTMigrated to launchd
brand-db-enrich-3mixtralDaily 3:30am CTMigrated to launchd (uses local Ollama Phi 4)
brand-reports-enrich-4mixtralDaily 4:30am CTRetired — all 8 target reports already enriched, nothing left to process
sponsor-pipeline-alertnoneDaily 3:25am CTMigrated to launchd
daily-channel-discoverymainDaily 3:45am CTMigrated to launchd
weekly-avg-views-updatemainWeekly Sat 4amMigrated to launchd
🧠overnight-competitive-intelmainDaily 5am CTAnalyze sponsor activity

Monitoring & Admin

StatusCronAgentSchedulePurpose
axel-build-healthaxel8x/day (every 2hr)Migrated to launchd
axel-github-watchaxel4x/dayMigrated to launchd
axel-security-checkaxelDaily 6am CTMigrated to launchd
brand-reports-deploy-checkmain2x/day 9am, 5pmDisabled — not needed, auto-deploy via Vercel handles this
cron-error-alertmainEvery 4hrsMigrated to launchd
revenue-collectormainDaily 6am CTMigrated to launchd
local-model-dispatchermainDaily 6am CTMigrated to launchd
weekly-security-auditmainWeekly Sat 8amMigrated to launchd
ca-website-uptimenoneEvery 15 minRetired — replaced with UptimeRobot (external monitoring)

Learning & Review

CronAgentSchedulePurpose
daily-learning-data-gather + daily-learning-summarymainDaily 10pm CT✅ Merged into one launchd job (com.ari.daily-learning.plist) — session digest + Haiku extraction + Telegram
review-sync-weeklymainWeekly Sat 6am✅ Migrated to launchd (script-based Trustpilot/review scraping)
weekly-read-later-digestmainWeekly Fri 3pm✅ Migrated to launchd (was using GPT-5.1, now script-based)
weekly-brand-activity-monitoraxelWeekly Mon 1:30amMonitor brand activity
weekly-brand-rescoreaxelWeekly Mon 2am✅ Migrated to launchd (runs --no-claude, no AI needed)
weekly-creator-stats-refreshaxelWeekly Mon 6am✅ Migrated to launchd (YouTube API + Airtable, no AI needed)
roster-avg-views-refresh (x3)arloWeekly Mon variousRefresh roster avg views in batches

Misc

StatusCronAgentSchedulePurpose
monthly-email-draftmain1st Monday 9amMigrated to launchd (direct Sonnet API call, no agent session)
sponsored-posts-rebuildmainMonthly 1st 8amMigrated to launchd
bounty-board-payout-syncmain4th and 18th 3pmMigrated to launchd
🧠agent-quickstart-auditmainQuarterly 1st 10amAudit agent quickstart configs
axel-quickstart-reviewaxelMonthly 1st 10amDisabled — edit operations failing
kevin-email-checkmainDaily 5pm CTDisabled
revenue-manual-check-inmainMonthly 21st 9amDisabled — redundant with launchd revenue-collector

Disabled Crons

CronDisabled DateReason
aptitude-test-notify2026-03-31No agent, unknown purpose, 144 sessions/day
pipeline-stall-alert2026-03-3196 sessions/day for a script check
needs-apple-sync2026-03-31Not actively used
contract-matcher2026-03-31Not actively used
russ-deal-notifier2026-03-31Not actively used
daily-backup2026-03-31✅ Migrated to launchd (com.ari.daily-backup.plist)
revenue-collector2026-03-31✅ Migrated to launchd (com.ari.revenue-collector.plist)
creator-airtable-sync2026-03-31✅ Migrated to launchd (com.ari.creator-airtable-sync.plist)
sync-close-creator-choices2026-03-31✅ Migrated to launchd (com.ari.sync-close-creator-choices.plist)
brand-db-nightly-merge2026-03-31✅ Migrated to launchd (com.ari.brand-db-nightly-merge.plist)
sponsor-pipeline-alert2026-03-31✅ Migrated to launchd (com.ari.sponsor-pipeline-alert.plist)
daily-channel-discovery2026-03-31✅ Migrated to launchd (com.ari.daily-channel-discovery.plist)
brand-reports-deploy-check2026-04-09⛔ Retired — not needed, Vercel auto-deploys (reviewed 2026-04-09)
ca-website-uptime2026-04-09⛔ Retired — replaced with UptimeRobot external monitoring (2026-04-09)
cron-error-alert2026-04-09✅ Migrated to launchd (com.ari.cron-error-alert.plist)
bounty-board-payout-sync2026-04-09✅ Migrated to launchd (com.ari.bounty-board-payout-sync.plist); fixed PAID_GROUP bug
creator-topic-enrichment2026-04-09✅ Migrated to launchd (com.ari.creator-topic-enrichment.plist)
new-creator-monitor2026-04-09✅ Migrated to launchd (com.ari.new-creator-monitor.plist)
weekly-avg-views-update2026-04-09✅ Migrated to launchd (com.ari.weekly-avg-views-update.plist)
axel-build-health2026-04-09✅ Migrated to launchd (co.creatorsagency.axel-build-health.plist)
axel-github-watch2026-04-09✅ Migrated to launchd (co.creatorsagency.axel-github-watch.plist)
axel-security-check2026-04-09✅ Migrated to launchd (co.creatorsagency.axel-security-check.plist)
local-model-dispatcher2026-04-09✅ Migrated to launchd (com.ari.local-model-dispatcher.plist)
weekly-security-audit2026-04-09✅ Migrated to launchd (com.ari.weekly-security-audit.plist)
blog-count-monitor2026-04-09✅ Migrated to launchd (com.creatorsagency.blog-count-monitor.plist)
sponsored-posts-rebuild2026-04-09✅ Migrated to launchd (com.ari.sponsored-posts-rebuild.plist)
brand-db-enrich-32026-04-09✅ Migrated to launchd (com.ari.brand-db-enrich-3.plist)
brand-reports-enrich-42026-04-09⛔ Retired — all target reports already enriched, no work remaining
ari-heartbeat2026-04-09⛔ Disabled — HEARTBEAT.md was empty, every run was a no-op
memory-filing2026-04-09✅ Migrated to launchd (com.ari.memory-filing.plist) — uses Haiku API
arlo-memory-filing2026-04-09✅ Migrated to launchd (com.arlo.memory-filing.plist) — uses Haiku API
axel-memory-filing2026-04-09✅ Migrated to launchd (com.axel.memory-filing.plist) — uses Haiku API
fathom-proposal-writer2026-04-09✅ Replaced with event-driven file watcher (com.arlo.fathom-proposal-watcher.plist)
arlo-template-learning2026-04-09⛔ Scrapped — not being used
axel-morning-standup2026-04-09✅ Migrated to launchd (com.axel.morning-standup.plist) — no AI, script-based
daily-agent-standup2026-04-09✅ Migrated to launchd (com.arlo.daily-agent-standup.plist) — no AI, script-based
nightly-log-condense2026-04-09✅ Migrated to launchd (com.ari.nightly-log-condense.plist) — uses Haiku API
daily-learning-data-gather2026-04-09✅ Merged with summary-gen into com.ari.daily-learning.plist
daily-learning-summary-gen2026-04-09✅ Merged with data-gather into com.ari.daily-learning.plist
weekly-brand-rescore2026-04-09✅ Migrated to launchd (com.axel.weekly-brand-rescore.plist)
weekly-creator-stats-refresh2026-04-09✅ Migrated to launchd (com.axel.weekly-creator-stats-refresh.plist)
close-duplicate-scan2026-04-09✅ Migrated to launchd (com.arlo.close-duplicate-scan.plist)
creator-wishlist-scanner2026-04-09✅ Migrated to launchd (com.arlo.creator-wishlist-scanner.plist)
review-sync-weekly2026-04-09✅ Migrated to launchd (com.ari.review-sync-weekly.plist)
weekly-read-later-digest2026-04-09✅ Migrated to launchd (com.ari.weekly-read-later-digest.plist)
monthly-email-draft2026-04-09✅ Migrated to launchd (com.ari.monthly-email-draft.plist) — uses Sonnet API directly
arlo-template-review2026-04-09⛔ Disabled — not needed
revenue-manual-check-in2026-04-09⛔ Disabled — redundant with launchd revenue-collector
axel-quickstart-review2026-04-09⛔ Disabled — edit operations failing

Migration Notes

Migration from OpenClaw to launchd is largely complete (2026-04-09). Only 12 crons remain on OpenClaw — all genuinely require AI agent sessions (standups, briefings, context pruning, heartbeats). The arlo-feedback-processor was also switched from OpenAI GPT-4o to Anthropic Haiku for cost savings.