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.