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
| Service | Plist | Script | Schedule | Purpose |
|---|---|---|---|---|
| Gateway | ai.openclaw.gateway.plist | OpenClaw gateway | Always on | Core OpenClaw gateway process |
| Pipeline Worker 1 | com.ari.pipeline-flow.plist | pipeline_flow.py --continuous | Always on | Primary YouTube pipeline worker |
| Pipeline Worker 2 | com.ari.pipeline-flow-worker2.plist | pipeline_flow.py --continuous | Always on | Parallel pipeline worker |
| Pipeline Health | com.ari.pipeline-health.plist | pipeline_health_check.py | Every 15 min | Auto-restarts dead pipeline processes |
| Pipeline Dashboard | com.ari.pipeline-dashboard.plist | update_pipeline_dashboard.py | Every 15 min | Port 3457 |
| Ari Dashboard | com.ari.dashboard-update.plist | update_ari_dashboard.py | Every 15 min | Port 3458 |
| Mission Control Collector | com.mission-control.collector.plist | Mission Control collector | Every 60 sec | Pushes crons, agents, pipeline, token usage to Convex |
| Overnight Monitor | com.ari.overnight-monitor.plist | overnight monitor | Overnight | Monitors overnight processes |
Data & Sync
| Service | Plist | Script | Schedule | Purpose |
|---|---|---|---|---|
| ✅ Daily Backup | com.ari.daily-backup.plist | launchd_daily_backup.sh | Daily 3am CT | Git commit + push workspace, snapshot data directory |
| ✅ Revenue Collector | com.ari.revenue-collector.plist | launchd_revenue_collector.sh | Daily 6:10am CT | Pull YTD revenue from Close, Impact, RedVentures, AdsByMoney, MSN; post to Convex |
| ✅ Creator Airtable Sync | com.ari.creator-airtable-sync.plist | launchd_creator_airtable_sync.sh | 7:05am, 9:05pm CT | Sync creators to media kits app (headshots, slugs, Airtable URLs) |
| ✅ Sync Close Creator Choices | com.ari.sync-close-creator-choices.plist | launchd_sync_close_creator_choices.sh | Daily 3am CT | Sync creator names to Close CRM custom fields |
| ✅ Brand DB Nightly Merge | com.ari.brand-db-nightly-merge.plist | launchd_brand_db_nightly_merge.sh | Daily 3:15am CT | Merge sponsor detection data into brand database |
| ✅ Sponsor Pipeline Alert | com.ari.sponsor-pipeline-alert.plist | launchd_sponsor_pipeline_alert.sh | Daily 3:25am CT | Check for new sponsor detections, alert on issues |
| ✅ Daily Channel Discovery | com.ari.daily-channel-discovery.plist | launchd_daily_channel_discovery.sh | Daily 3:45am CT | Discover new YouTube channels via search + related |
| Apple Email Scan | com.ari.apple-email-scan.plist | apple_email_scan.py | Every 30 min | Rule-based email archive |
| Channel Discovery | com.ari.channel-discovery.plist | channel discovery | Scheduled | YouTube channel discovery |
| Sponsor Detection | com.ari.sponsor-detect-continuous.plist | sponsor detection | Always on | Continuous sponsor detection in videos |
| Step 4B Ongoing | com.ari.step4b-ongoing.plist | step 4b | Always on | Pipeline step 4b processing |
| Creator Enrichment | com.axel.creator-enrichment.plist | creator enrichment | Scheduled | Enrich creator data |
| Sync Brand Emails | com.axel.sync-brand-emails.plist | sync brand emails | Scheduled | Sync brand email data |
| Sync TikTok/IG | com.axel.sync-tiktok-ig-apiless.plist | TikTok/IG sync | Scheduled | Sync TikTok and Instagram data without API |
| Annie Outreach Sync | co.creatorsagency.annie-outreach-sync.plist | outreach sync | Scheduled | Sync Annie's outreach data |
| Check Email Sent | com.arlo.check-email-sent.plist | email sent checker | Scheduled | Verify emails were sent |
Axel Services
| Service | Plist | Script | Schedule | Purpose |
|---|---|---|---|---|
| Calendar Sync | com.axel.calendar-sync.plist | calendar sync | Scheduled | Sync calendar data |
| Cron Activity Sync | com.axel.cron-activity-sync.plist | cron activity sync | Scheduled | Sync cron activity data |
| Memory Docs Sync | com.axel.memory-docs-sync.plist | memory docs sync | Scheduled | Sync memory documents |
| Memory Indexer | com.axel.memory-indexer.plist | memory indexer | Scheduled | Index memory files |
| Scoring Bridge | com.axel.scoring-bridge.plist | scoring bridge | Scheduled | Bridge scoring data |
Cal.com & Slack
| Service | Plist | Script | Schedule | Purpose |
|---|---|---|---|---|
| Cal.com Health Monitor | com.openclaw.calcom-health-monitor.plist | health monitor | Scheduled | Monitor Cal.com integration health |
| Cal.com Mini Proxy | com.openclaw.calcom-mini-proxy.plist | mini proxy | Always on | Proxy Cal.com requests through Mini |
| Cal.com Slack Notify | com.openclaw.calcom-slack-notify.plist | Slack notify | Webhook | Notify Slack of new Cal.com bookings |
| Arlo Slack Keepalive | ai.openclaw.arlo-slack-keepalive.plist | keepalive | Periodic | Keep Arlo's Slack socket alive |
| Vercel Health | co.creatorsagency.vercel-health.plist | health check | Scheduled | Monitor Vercel deployments |
Memory & Code Factory
| Service | Plist | Script | Schedule | Purpose |
|---|---|---|---|---|
| Memory Write Daemon | com.creatorsagency.memory-write-daemon.plist | memory write | Always on | Memory write daemon |
| Memory Write Server | com.creatorsagency.memory-write-server.plist | memory write server | Always on | Memory write HTTP server |
| Code Factory Hourly | com.codefactory.hourly.plist | code_factory.py | Every 60 min | Code Factory main orchestrator |
| Code Factory Weekly | com.codefactory.weekly.plist | code_factory_planning.py | Weekly | Code Factory mission planning |
| Agent Daily Digest | co.creatorsagency.agent-daily-digest.plist | daily digest | Daily | Agent 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)
| Cron | Agent | Schedule | Purpose |
|---|---|---|---|
ari-heartbeat | Ari (main) | ⛔ Disabled | Disabled — HEARTBEAT.md was empty, every run was a no-op |
arlo-heartbeat | Arlo | 9:05am, 5:05pm CT | Reduced from 4x to 2x/day (webhook check + handoffs) |
axel-heartbeat | Axel | 10:10am, 2:10pm, 6:10pm CT | Check pending-work.md, pick up tasks |
Memory & Context
| Cron | Agent | Schedule | Purpose |
|---|---|---|---|
memory-filing | main | 9am, 12pm, 5pm, 9pm CT | ✅ Migrated to launchd (keyword routing + Haiku API) |
axel-memory-filing | axel | 9:30am, 12:30pm, 5:30pm, 9:30pm CT | ✅ Migrated to launchd (Slack pull + Haiku API) |
arlo-memory-filing | arlo | 9:30am, 12:30pm, 5:30pm, 9:30pm CT | ✅ Migrated to launchd (Slack pull + Haiku API) |
nightly-log-condense | main | 10:45pm CT | ✅ Migrated to launchd (Haiku API for summarization) |
context-pruning | main | Weekly Sun 10pm | Move completed items to archive |
axel-context-pruning | axel | Weekly Sun 10pm | Same for Axel |
arlo-context-pruning | arlo | Weekly Sun 10pm | Same for Arlo |
Blog Factory (✅ All migrated to launchd)
| Cron | Agent | Schedule | Purpose |
|---|---|---|---|
ca-blog-article-1 through 5 | main | 11pm CT daily | ✅ Migrated — now com.creatorsagency.blog-ca-daily.plist |
mm-blog-article-1 through 5 | main | 12am CT daily | ✅ Migrated — now com.creatorsagency.blog-mm-daily.plist |
ca-blog-weekly | main | Weekly Mon 8am | ✅ Migrated — now com.creatorsagency.blog-ca-weekly.plist |
mm-blog-weekly | main | Weekly Mon 8:30am | ✅ Migrated — now com.creatorsagency.blog-mm-weekly.plist |
blog-count-monitor | main | Daily 11am CT | ✅ Migrated — now com.creatorsagency.blog-count-monitor.plist |
blog-assumption-review | main | Daily 7:30am CT | ✅ Migrated — now com.creatorsagency.blog-assumption-review.plist |
Sales & CRM (Arlo)
| Cron | Agent | Schedule | Purpose |
|---|---|---|---|
fathom-proposal-writer | arlo | ✅ Event-driven | Replaced 30-min polling with file watcher daemon (com.arlo.fathom-proposal-watcher.plist) — triggers only when proposals queued |
close-duplicate-scan | arlo | Daily 7am CT | ✅ Migrated to launchd (script-based, no AI) |
creator-wishlist-scanner | arlo | Daily 8pm CT | ✅ Migrated to launchd (script-based) |
arlo-feedback-processor | arlo | Daily 9pm CT | Switched from OpenAI GPT-4o to Anthropic Haiku |
arlo-template-learning | arlo | ⛔ Disabled | Scrapped — not being used |
arlo-template-review | arlo | ⛔ Disabled | Turned off — not needed |
proposal-learning-monitor | arlo | ⛔ Disabled | Already disabled |
daily-agent-standup | arlo | Weekdays 9pm CT | ✅ Migrated to launchd (script-based aggregation, no AI) |
Standups & Briefings
| Cron | Agent | Schedule | Purpose |
|---|---|---|---|
ari-daily-standup | main | Weekdays 8:45pm CT | Write daily standup |
arlo-daily-standup | arlo | Weekdays 8:45pm CT | Write daily standup |
axel-daily-standup | axel | Weekdays 8:45pm CT | Write daily standup |
axel-morning-standup | axel | Weekdays 9am CT | ✅ Migrated to launchd (script reads pending-work.md, posts to Slack, no AI) |
aaron-daily-briefing | main | Weekdays 10am CT | Reduced from 7 days to weekdays only |
daily-meeting-briefs | arlo | Daily 6am CT | Pull calendar, DM agents meeting prep |
Data & Pipeline
| Status | Cron | Agent | Schedule | Purpose |
|---|---|---|---|---|
| ✅ | creator-airtable-sync | main | 7am, 9pm CT | Migrated to launchd |
| ✅ | creator-topic-enrichment | main | Daily 4am CT | Migrated to launchd |
| ✅ | new-creator-monitor | main | 6x/day (8am-6pm) | Migrated to launchd |
| ✅ | sync-close-creator-choices | main | Daily 3am CT | Migrated to launchd |
| ✅ | brand-db-nightly-merge | none | Daily 3:15am CT | Migrated to launchd |
| ✅ | brand-db-enrich-3 | mixtral | Daily 3:30am CT | Migrated to launchd (uses local Ollama Phi 4) |
| ⛔ | brand-reports-enrich-4 | mixtral | Daily 4:30am CT | Retired — all 8 target reports already enriched, nothing left to process |
| ✅ | sponsor-pipeline-alert | none | Daily 3:25am CT | Migrated to launchd |
| ✅ | daily-channel-discovery | main | Daily 3:45am CT | Migrated to launchd |
| ✅ | weekly-avg-views-update | main | Weekly Sat 4am | Migrated to launchd |
| 🧠 | overnight-competitive-intel | main | Daily 5am CT | Analyze sponsor activity |
Monitoring & Admin
| Status | Cron | Agent | Schedule | Purpose |
|---|---|---|---|---|
| ✅ | axel-build-health | axel | 8x/day (every 2hr) | Migrated to launchd |
| ✅ | axel-github-watch | axel | 4x/day | Migrated to launchd |
| ✅ | axel-security-check | axel | Daily 6am CT | Migrated to launchd |
| ⛔ | brand-reports-deploy-check | main | 2x/day 9am, 5pm | Disabled — not needed, auto-deploy via Vercel handles this |
| ✅ | cron-error-alert | main | Every 4hrs | Migrated to launchd |
| ✅ | revenue-collector | main | Daily 6am CT | Migrated to launchd |
| ✅ | local-model-dispatcher | main | Daily 6am CT | Migrated to launchd |
| ✅ | weekly-security-audit | main | Weekly Sat 8am | Migrated to launchd |
| ⛔ | ca-website-uptime | none | Every 15 min | Retired — replaced with UptimeRobot (external monitoring) |
Learning & Review
| Cron | Agent | Schedule | Purpose |
|---|---|---|---|
daily-learning-data-gather + daily-learning-summary | main | Daily 10pm CT | ✅ Merged into one launchd job (com.ari.daily-learning.plist) — session digest + Haiku extraction + Telegram |
review-sync-weekly | main | Weekly Sat 6am | ✅ Migrated to launchd (script-based Trustpilot/review scraping) |
weekly-read-later-digest | main | Weekly Fri 3pm | ✅ Migrated to launchd (was using GPT-5.1, now script-based) |
weekly-brand-activity-monitor | axel | Weekly Mon 1:30am | Monitor brand activity |
weekly-brand-rescore | axel | Weekly Mon 2am | ✅ Migrated to launchd (runs --no-claude, no AI needed) |
weekly-creator-stats-refresh | axel | Weekly Mon 6am | ✅ Migrated to launchd (YouTube API + Airtable, no AI needed) |
roster-avg-views-refresh (x3) | arlo | Weekly Mon various | Refresh roster avg views in batches |
Misc
| Status | Cron | Agent | Schedule | Purpose |
|---|---|---|---|---|
| ✅ | monthly-email-draft | main | 1st Monday 9am | Migrated to launchd (direct Sonnet API call, no agent session) |
| ✅ | sponsored-posts-rebuild | main | Monthly 1st 8am | Migrated to launchd |
| ✅ | bounty-board-payout-sync | main | 4th and 18th 3pm | Migrated to launchd |
| 🧠 | agent-quickstart-audit | main | Quarterly 1st 10am | Audit agent quickstart configs |
| ⛔ | axel-quickstart-review | axel | Monthly 1st 10am | Disabled — edit operations failing |
| ⛔ | kevin-email-check | main | Daily 5pm CT | Disabled |
| ⛔ | revenue-manual-check-in | main | Monthly 21st 9am | Disabled — redundant with launchd revenue-collector |
Disabled Crons
| Cron | Disabled Date | Reason |
|---|---|---|
aptitude-test-notify | 2026-03-31 | No agent, unknown purpose, 144 sessions/day |
pipeline-stall-alert | 2026-03-31 | 96 sessions/day for a script check |
needs-apple-sync | 2026-03-31 | Not actively used |
contract-matcher | 2026-03-31 | Not actively used |
russ-deal-notifier | 2026-03-31 | Not actively used |
daily-backup | 2026-03-31 | ✅ Migrated to launchd (com.ari.daily-backup.plist) |
revenue-collector | 2026-03-31 | ✅ Migrated to launchd (com.ari.revenue-collector.plist) |
creator-airtable-sync | 2026-03-31 | ✅ Migrated to launchd (com.ari.creator-airtable-sync.plist) |
sync-close-creator-choices | 2026-03-31 | ✅ Migrated to launchd (com.ari.sync-close-creator-choices.plist) |
brand-db-nightly-merge | 2026-03-31 | ✅ Migrated to launchd (com.ari.brand-db-nightly-merge.plist) |
sponsor-pipeline-alert | 2026-03-31 | ✅ Migrated to launchd (com.ari.sponsor-pipeline-alert.plist) |
daily-channel-discovery | 2026-03-31 | ✅ Migrated to launchd (com.ari.daily-channel-discovery.plist) |
brand-reports-deploy-check | 2026-04-09 | ⛔ Retired — not needed, Vercel auto-deploys (reviewed 2026-04-09) |
ca-website-uptime | 2026-04-09 | ⛔ Retired — replaced with UptimeRobot external monitoring (2026-04-09) |
cron-error-alert | 2026-04-09 | ✅ Migrated to launchd (com.ari.cron-error-alert.plist) |
bounty-board-payout-sync | 2026-04-09 | ✅ Migrated to launchd (com.ari.bounty-board-payout-sync.plist); fixed PAID_GROUP bug |
creator-topic-enrichment | 2026-04-09 | ✅ Migrated to launchd (com.ari.creator-topic-enrichment.plist) |
new-creator-monitor | 2026-04-09 | ✅ Migrated to launchd (com.ari.new-creator-monitor.plist) |
weekly-avg-views-update | 2026-04-09 | ✅ Migrated to launchd (com.ari.weekly-avg-views-update.plist) |
axel-build-health | 2026-04-09 | ✅ Migrated to launchd (co.creatorsagency.axel-build-health.plist) |
axel-github-watch | 2026-04-09 | ✅ Migrated to launchd (co.creatorsagency.axel-github-watch.plist) |
axel-security-check | 2026-04-09 | ✅ Migrated to launchd (co.creatorsagency.axel-security-check.plist) |
local-model-dispatcher | 2026-04-09 | ✅ Migrated to launchd (com.ari.local-model-dispatcher.plist) |
weekly-security-audit | 2026-04-09 | ✅ Migrated to launchd (com.ari.weekly-security-audit.plist) |
blog-count-monitor | 2026-04-09 | ✅ Migrated to launchd (com.creatorsagency.blog-count-monitor.plist) |
sponsored-posts-rebuild | 2026-04-09 | ✅ Migrated to launchd (com.ari.sponsored-posts-rebuild.plist) |
brand-db-enrich-3 | 2026-04-09 | ✅ Migrated to launchd (com.ari.brand-db-enrich-3.plist) |
brand-reports-enrich-4 | 2026-04-09 | ⛔ Retired — all target reports already enriched, no work remaining |
ari-heartbeat | 2026-04-09 | ⛔ Disabled — HEARTBEAT.md was empty, every run was a no-op |
memory-filing | 2026-04-09 | ✅ Migrated to launchd (com.ari.memory-filing.plist) — uses Haiku API |
arlo-memory-filing | 2026-04-09 | ✅ Migrated to launchd (com.arlo.memory-filing.plist) — uses Haiku API |
axel-memory-filing | 2026-04-09 | ✅ Migrated to launchd (com.axel.memory-filing.plist) — uses Haiku API |
fathom-proposal-writer | 2026-04-09 | ✅ Replaced with event-driven file watcher (com.arlo.fathom-proposal-watcher.plist) |
arlo-template-learning | 2026-04-09 | ⛔ Scrapped — not being used |
axel-morning-standup | 2026-04-09 | ✅ Migrated to launchd (com.axel.morning-standup.plist) — no AI, script-based |
daily-agent-standup | 2026-04-09 | ✅ Migrated to launchd (com.arlo.daily-agent-standup.plist) — no AI, script-based |
nightly-log-condense | 2026-04-09 | ✅ Migrated to launchd (com.ari.nightly-log-condense.plist) — uses Haiku API |
daily-learning-data-gather | 2026-04-09 | ✅ Merged with summary-gen into com.ari.daily-learning.plist |
daily-learning-summary-gen | 2026-04-09 | ✅ Merged with data-gather into com.ari.daily-learning.plist |
weekly-brand-rescore | 2026-04-09 | ✅ Migrated to launchd (com.axel.weekly-brand-rescore.plist) |
weekly-creator-stats-refresh | 2026-04-09 | ✅ Migrated to launchd (com.axel.weekly-creator-stats-refresh.plist) |
close-duplicate-scan | 2026-04-09 | ✅ Migrated to launchd (com.arlo.close-duplicate-scan.plist) |
creator-wishlist-scanner | 2026-04-09 | ✅ Migrated to launchd (com.arlo.creator-wishlist-scanner.plist) |
review-sync-weekly | 2026-04-09 | ✅ Migrated to launchd (com.ari.review-sync-weekly.plist) |
weekly-read-later-digest | 2026-04-09 | ✅ Migrated to launchd (com.ari.weekly-read-later-digest.plist) |
monthly-email-draft | 2026-04-09 | ✅ Migrated to launchd (com.ari.monthly-email-draft.plist) — uses Sonnet API directly |
arlo-template-review | 2026-04-09 | ⛔ Disabled — not needed |
revenue-manual-check-in | 2026-04-09 | ⛔ Disabled — redundant with launchd revenue-collector |
axel-quickstart-review | 2026-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.