# Add heartbeats to Ace Manglasabang **Linear:** MAN-21 — https://linear.app/manglasabang/issue/MAN-21/add-heartbeats-to-ace-manglasabang **Status:** Done **Project:** junwonhome ## Description Internal services and background jobs for Ace. Folder: `heartbeats/` (root level) Heartbeats are autonomous processes that run on schedules or as daemons. Unlike channels (email, slack, linear) which are communication interfaces with Junwon, heartbeats are Ace talking to itself — monitoring, reporting, background work. ## Services | Service | Schedule | What it does | | -- | -- | -- | | **Morning Briefing** | 6:00 AM PST daily | Weather (Open-Meteo) + active tasks summary to Slack | | **Market Report** | 7:00 AM PST daily | S&P 500, Nasdaq, KOSPI, VIX, crude, USD/KRW, BTC to Slack | | **Radar** | 9:05 AM PST daily | Scans aceradar synced folders for due dates within 30 days, emails Junwon | | **Heartbeats** | 9 AM, 9 PM PST | Spawns Sonnet session. Service health check, urgent email check, stale task detection, Linear sync audit | | **Reflection** | Sun (weekly), 1st (monthly), Jan 1 (yearly) | Compiles daily notes into week/month/year summaries (max 2k words). Propagates insights to identity files. Runs independently. | | **Monitor** | 10 PM PST daily | Aggregates usage.jsonl into HTML dashboard | ## Architecture * Each service has: [run.sh](), [install.sh](), launchd plist, logs/ dir * [run.sh]() sources secrets from secretariat/keychain/.env * Install via ./heartbeats//install.sh (symlinks plist to \~/Library/LaunchAgents) * Radar reads from secretariat/tasks-synced-from-linear-to-git/aceradar/ (synced by linear daemon) * Reflection state: secretariat/memory/most-recent-reflections.json * Compliance tracking absorbed into aceRADAR (Linear). No more check-compliance.csv.