All cron jobs, launchd agents, and persistent systemd services across every machine. Updated May 12, 2026.
Cron error routing: All cron scripts are wrapped with cron-gotify-wrapper.sh which captures stderr and pushes errors to Gotify at priority 5 (โ Telegram). MAILTO="" is set in both hpve and CT100 crontabs to prevent local mail delivery.
Health check script updated Apr 18: now monitors nvmepool, Biggest, backups, offsite (was referencing retired pool names). CWA cleanup cron re-added to CT100.
Mac Studio (192.168.8.180)
User Crontab (crontab -e as bee)
| Schedule |
Command |
Purpose |
*/30 * * * * |
/Users/bee/Sync/ED/homelab/bee_hub/deploy-vps.sh |
Build Hugo site and rsync public/ to VPS nginx โ every 30 min |
Homebrew Services
| Service |
Purpose |
Port |
syncthing |
Peer-to-peer file sync โ hub-and-spoke via Proxmox |
22000 (sync), 8384 (UI, localhost only) |
launchd Agents (~/Library/LaunchAgents/)
Persistent services (RunAtLoad: true, KeepAlive: true):
| Plist |
Script/Binary |
Port |
Purpose |
com.beedifferent.embed-server |
~/Sync/ED/life_archive/embed_server.py |
1235 |
gte-Qwen2-7B embedding server on MPS |
com.beedifferent.hugo-hub |
/opt/homebrew/bin/hugo server |
1313 |
Bee Hub docs site on LAN |
com.beedifferent.life-archive-api |
~/Sync/ED/life_archive/http_api.py |
8900 |
Life Archive RAG FastAPI |
com.beedifferent.life-archive-mcp-http |
~/Sync/ED/life_archive/mcp_server_http.py |
8901 |
Life Archive MCP HTTP server |
Scheduled skills (Mac Studio ~/Sync/ED/skills/, managed via Claude Cowork) โ use StartCalendarInterval, no KeepAlive:
| Plist |
Schedule |
Script |
Purpose |
com.bee.browser-history |
Daily 5:30 AM |
~/Sync/ED/skills/browser-history/scripts/analyze.py --days 90 |
Snapshot Brave history โ ranked site report |
com.bee.mac-inventory |
Weekly Sun 6:00 AM |
~/Sync/ED/skills/mac-inventory/scripts/inventory.py |
Snapshot Homebrew, casks, App Store, launchd, login items |
com.bee.skills-index |
Daily 5:45 AM |
~/Sync/ED/skills/scripts/generate_index.py |
Walk ~/Sync/ED/skills/, regenerate SKILLS_INDEX.md |
com.edmd.check-telegram-bridge |
Every 30 min |
/Users/bee/Scripts/check-telegram-bridge.sh |
Check Gotify-Telegram bridge health via SSH; send iMessage alert to Ed if bridge is failing, recovery message when restored |
com.bee.doc-sync |
Daily 3:00 AM |
~/Sync/ED/skills/doc-sync/scripts/run.sh |
Read previous day’s Claude conversations, compare against TASKS.md + memory + .claude-context.md, patch them, send email summary via msmtp then Gotify. Auth: Reads ~/.config/anthropic-api-key (chmod 600, no trailing newline, no -n prefix โ the script defensively strips -n since manual echo -n corrupted the file on 2026-05-24); Step 0 fail-fast precheck hits /v1/models and exits clean with a Gotify alert if 401 (instead of burning 5+ minutes on a 1 MB prompt) |
com.bee.mcp-health-check |
6ร/day (06:15, 09:15, 12:15, 15:15, 18:15, 21:15) |
~/scripts/check-mcp-health.py |
Scan each MCP’s log in ~/Library/Logs/Claude/mcp-server-<name>.log for Server transport closed unexpectedly, connect-timeout, fetch-failed, [error] lines in the last 6 hours. Gotify-alert on any failure. State log at ~/Library/Logs/mcp-health-check.log |
com.bee.pull-homelab-config |
Daily 3:00 AM |
git -C ~/homelab-config pull --ff-only |
Pulls homelab-config repo (cloned from pve over SSH) to keep the Mac-side mirror fresh for git-semantic MCP queries. Pve writes the canonical copy via collect-configs.sh at 02:45 |
com.bee.rebuild-mcp-venvs |
WatchPath on ~/.mcp-servers/ (MacBook-side mostly) |
~/scripts/rebuild-mcp-venvs.sh |
When MCP server source files change via Syncthing, walk ~/.mcp-servers/, rebuild any .venv whose requirements.txt is newer than .venv/bin/python3. Prefers python3.14โ3.13โ3.12โ3.11โ3.10โ3 |
com.bee.homelab-snapshot |
Every few minutes |
~/.mcp-servers/homelab-snapshot/snapshot.py |
Writes ~/Sync/ED/.homelab-snapshot.json with current zfs/docker/disk state. Read this file directly for state; faster than the MCP for known-stale-OK queries |
com.bee.copy-life-archive |
Daily 9 AM (self-disabling) |
rsync wrapper |
Copy life_archive_backup to Biggest pool. Self-disables after a successful run |
launchctl list | grep -E 'beedifferent|com.bee'
launchctl kickstart -k gui/$(id -u)/com.beedifferent.hugo-hub
launchctl kickstart -k gui/$(id -u)/com.bee.skills-index
Proxmox VE Host (192.168.8.221)
Root Crontab
| Schedule |
Command |
Purpose |
*/15 * * * * |
system-health-check.sh |
Disk, ZFS, backup, USB monitoring โ Gotify (wrapped: stderr โ Gotify pri 5) |
0 1 * * * |
backup-nvmepool-nightly.sh |
rsync nvmepool โ Biggest/nvmepool-backup (wrapped: stderr โ Gotify pri 5) |
45 2 * * * |
collect-configs.sh |
Nightly git backup of all homelab configs to GitHub (wrapped). Fixed May 2026: PATH and SSH key issues |
0 3 1 * * |
zpool scrub Biggest |
Monthly scrub โ 1st of month |
0 3 8 * * |
zpool scrub nvmepool |
Monthly scrub โ 8th |
0 3 22 * * |
zpool scrub mediapool |
Monthly scrub โ 22nd |
Removed / moved:
sync-mac.sh (daily 2am) โ removed 2026-04-13, was failing with rsync error 12
sync-seedbox.sh (every 2 min) โ removed 2026-04-13
seedbox-sync.sh (every 15 min) โ moved to CT100 crontab
books-ingest-pipeline.sh (every 15 min) โ moved to CT100 crontab
Lidarr MissingAlbumSearch (daily 4 AM) โ removed
Systemd Services
| Service |
Purpose |
syncthing@root.service |
File sync hub โ UI at :8384 |
netbird.service |
NetBird mesh VPN โ replaces Pangolin |
transmission-tunnel.service |
SSH tunnel :13010 โ seedbox Transmission RPC โ required for *arr app download management |
Removed / inactive:
nzbget-tunnel.service โ SSH tunnel :16789 โ seedbox NZBGet (moved to CT100 as autossh-nzbget)
nzbhydra2-tunnel.service โ SSH tunnel :15076 โ seedbox NZBHydra2
deluge-tunnel.service โ SSH tunnel :58846 โ seedbox Deluge (SSL cert issue, never used)
qbit-tunnel.service โ SSH tunnel :18080 โ seedbox qBittorrent (Squid proxy blocks HTTP, never used)
ZFS Auto-Snapshots (Proxmox built-in)
| Frequency |
Keep |
| Every 15 min |
4 |
| Hourly |
24 |
| Daily |
31 |
| Weekly |
8 |
| Monthly |
12 |
Proxmox vzdump Backup
Daily 2:00 AM, all VMs/CTs, snapshot mode, zstd compression, 3 copies retained โ /backups/dump
CT 100 โ Docker Host (192.168.8.100)
Root Crontab
| Schedule |
Command |
Purpose |
*/5 * * * * |
kiwix-watcher.sh |
Kiwix content watcher |
*/5 * * * * |
check-socks-tunnel.sh |
Monitor SOCKS5 tunnel health |
*/15 * * * * |
seedbox-sync.sh |
Pull from seedbox โ nzbget Music+Books + general complete (moved from hpve) |
*/15 * * * * |
books-ingest-pipeline.sh |
Move book files from seedbox ingest โ CWA ingest folder (moved from hpve) |
*/30 * * * * |
beet-full-pipeline.sh |
Beets pipeline: import, tag, art (wrapped) |
30 2 * * * |
backup-farmdb.sh |
FarmDB pg_dump backup (wrapped) |
30 2 * * * |
backup-all-dbs.sh |
Backup all PostgreSQL databases |
0 4 * * 0 |
docker system prune -a -f |
Weekly Docker cleanup โ removes unused images, containers, networks. Logs to /var/log/docker-prune.log |
0 5 * * * |
clean-cwa-processed.sh |
Clean CWA processed_books older than 7 days (wrapped) |
Systemd Services
| Service |
Purpose |
docker.service |
Docker runtime for all containers |
autossh-socks.service |
autossh SOCKS5 :1080 โ seedbox (NL exit) โ legacy, replaced by WireGuard for most apps but still running |
autossh-transmission.service |
autossh tunnel :13010 โ seedbox Transmission RPC โ required for *arr app download management |
autossh-nzbget.service |
autossh tunnel :16789 โ seedbox NZBGet โ required for Usenet downloads |
wg-quick@wg0.service |
WireGuard tunnel to UltraCC NL โ 45.86.221.26:13012. All Docker outbound exits via this tunnel. Persists boot via /etc/iptables/rules.v4 (kill-switch + MSS clamp). Added Apr 29 2026. See WireGuard tunnel |
SMB Shares (Proxmox, all in /etc/samba/smb.conf)
| Share |
Path |
Access |
| Review |
/Biggest/Maple |
read-write |
| Sync |
/nvmepool/sync |
read-only |
| Music |
/nvmepool/music |
read-write |
| Books |
/nvmepool/books |
read-write |
| Movies |
/nvmepool/movies |
read-write |
| Video |
/nvmepool/video |
read-write |
| Media Staging |
/Biggest/media-staging |
read-write |
| backups |
/backuppool |
read-only |
| nvmepool-backup |
/Biggest/nvmepool-backup |
read-only |
| Possible Delete |
/Biggest/Possible Delete |
read-write |
All shares: valid users = bee, no registry shares (migrated 2026-04-13).
Cowork Scheduled Tasks (Claude Desktop)
Managed in the Claude Desktop app under Settings โ Scheduled Tasks. These run as Cowork sessions on the Mac Studio.
| Task |
Schedule |
Purpose |
daily-briefing |
Daily 4:00 AM |
Morning briefing โ media imports, homelab health (via homelab-snapshot MCP + ~/Sync/ED/.homelab-snapshot.json fallback), seedbox queue, farm DB changes, backups (via ~/scripts/homelab-backup-status.py), weather (NWS), Uptime Kuma summary, dictation items, diary, tasks. Delivered to ~/Sync/ED/{todays,morning}-briefing.md + email via msmtp + Drafts note. *arr data via ~/scripts/arr-briefing-data.py (one clean SSH-Python-heredoc call instead of inline shell-string chains) |
claude-email-review |
Hourly |
Scan Gmail for actionable items, draft responses, flag urgent messages. Uses Gmail MCP connector (OAuth โ may need re-auth periodically) |
process-dictation |
Hourly |
Transcribe new JPR voice recordings (Whisper large-v3 via mlx-whisper), parse dash-commands, extract tasks/observations/diary. Date-keyed by recording start time (from JPR folder name), never script-run time. No-content placeholder when run produces no narrative |
tana-mac-contacts-sync |
Weekly Sun 8:00 AM |
Sync Mac Contacts โ Tana #contact nodes โ Tana wins conflicts |
calendar-duplicate-cleanup |
Daily 7:07 AM |
Scan all Google Calendars for duplicate events (fuzzy venue-name normalization for Dawes / Licking Park District / trailing parens), delete extras |
Gmail connector auth: The claude-email-review task uses an OAuth connector that expires periodically. When it fails, the Gotify-Telegram bridge sends an iMessage fallback alert. Re-authenticate in Claude Desktop โ Settings โ Connectors โ Gmail.
Quick Reference โ All Schedules
| Time |
Machine |
Job |
| Every 5 min |
CT 100 |
kiwix-watcher.sh |
| Every 5 min |
CT 100 |
check-socks-tunnel.sh โ SOCKS5 tunnel health monitor |
| Every 15 min |
Proxmox |
system-health-check.sh |
| Every 15 min |
CT 100 |
seedbox-sync.sh โ pull from seedbox (moved from hpve) |
| Every 15 min |
CT 100 |
books-ingest-pipeline.sh โ seedbox books โ CWA (moved from hpve) |
| Every 30 min |
CT 100 |
beet-full-pipeline.sh |
| Every 30 min |
Mac Studio |
deploy-vps.sh โ hugo build + push |
| Every 30 min |
Mac Studio |
com.edmd.check-telegram-bridge โ Telegram bridge health monitor + iMessage fallback |
| Hourly |
Proxmox |
ZFS hourly snapshot (keep 24) |
| Daily 1:00 AM |
Proxmox |
backup-nvmepool-nightly.sh |
| Daily 2:00 AM |
Proxmox |
vzdump โ backup all VMs/CTs to Biggest/backups |
| Daily 2:30 AM |
CT 100 |
backup-farmdb.sh โ pg_dump farmdb (Gotify wrapped) |
| Daily 2:30 AM |
CT 100 |
backup-all-dbs.sh โ backup all PostgreSQL databases |
| Daily 2:45 AM |
Proxmox |
collect-configs.sh โ git backup all configs to GitHub (wrapped) |
| Daily 3:00 AM |
Mac Studio |
backup-farmdb-gdrive.sh โ pull dump, push to Google Drive |
| Daily 3:00 AM |
Mac Studio |
com.bee.doc-sync โ Claude conversation drift detector |
| Daily 3:00 AM |
Mac Studio |
com.bee.pull-homelab-config โ git pull –ff-only ~/homelab-config |
| Daily 4:00 AM |
Cowork |
daily-briefing โ morning briefing |
| Daily 5:00 AM |
CT 100 |
clean-cwa-processed.sh |
| Daily 5:30 AM |
Mac Studio |
com.bee.browser-history โ Brave history snapshot |
| Daily 5:45 AM |
Mac Studio |
com.bee.skills-index โ regenerate SKILLS_INDEX.md |
| 6ร/day at :15 |
Mac Studio |
com.bee.mcp-health-check โ scan MCP logs for transport-closed / errors โ Gotify |
| Daily 7:07 AM |
Cowork |
calendar-duplicate-cleanup โ dedupe Google Calendar |
| Hourly |
Cowork |
claude-email-review โ Gmail scan + draft responses |
| Hourly |
Cowork |
process-dictation โ voice notes โ structured tasks |
| Weekly Sun 4:00 AM |
CT 100 |
docker system prune -a -f โ weekly Docker cleanup |
| Weekly Sun 6:00 AM |
Mac Studio |
com.bee.mac-inventory โ installed-software snapshot |
| Weekly Sun 8:00 AM |
Cowork |
tana-mac-contacts-sync โ sync Mac Contacts โ Tana #contact nodes |
| Daily |
Proxmox |
ZFS daily snapshot (keep 31) |
| Weekly |
Proxmox |
ZFS weekly snapshot (keep 8) |
| 1st of month |
Proxmox |
zpool scrub Biggest |
| 8th of month |
Proxmox |
zpool scrub nvmepool |
| 22nd of month |
Proxmox |
zpool scrub mediapool |
| Monthly |
Proxmox |
ZFS monthly snapshot (keep 12) |