# Checkpoint: Systemd PATH Fix + Heartbeat Consolidation **Date:** 2026-04-06 **Session:** Main (Telegram) --- ## Context Michael asked about whether OpenClaw could see inside the `openclaw.json` gateway config. This led to a broader discussion about heartbeat vs cron for multi-task intelligence gathering (email triage, weather, calendar, news, blog alerts, step/health monitoring). --- ## Key Decisions Made ### 1. Heartbeat Consolidation (✅ Done) **Old approach:** 9 separate cron jobs, 6 delivering to Telegram throughout the day. **New approach:** 1 consolidated heartbeat every 45 min, 6am–9pm Sydney, with internal checks for: - Home monitor (motion/camera changes) - Email inbox scan (personal emails only) - Weather — Narooma (always report first beat of day; rain ≥10% or gusts ≥30 km/h triggers alert) - Blog RSS scan (new articles) - Real estate morning report (6am only) **CRUD operations:** - `Narooma Weather Day Update` cron → **disabled** - All other crons → **left intact** (Michael disabled them himself) - HEARTBEAT.md → **updated** with new weather logic ### 2. Heartbeat Config Change in openclaw.json (✅ Done) **Before:** - Every: 30m - Active hours: 9:00 AM – 10:00 PM **After:** - Every: 45m - Active hours: 6:00 AM – 9:00 PM **Applied via:** direct JSON edit to `/home/openclaw/.openclaw/openclaw.json` → required manual `sudo systemctl restart openclaw` (Michael ran this) ### 3. OpenClaw CLI Not in PATH — Root Cause Identified **Problem:** OpenClaw CLI (`openclaw`) lives at `/home/openclaw/.npm-global/bin/openclaw` but this directory was missing from the PATH in exec sessions, even though Michael's interactive shell has it set via `~/.bashrc`. **Root cause:** systemd services don't source `~/.bashrc`. The `User=openclaw` directive in the systemd unit doesn't trigger a login shell — it just runs the binary directly with a minimal environment. **Solution (proposed, pending Michael's action):** Add a drop-in systemd override at: ``` /etc/systemd/system/openclaw.service.d/path.conf ``` With content: ``` [Service] Environment="PATH=/home/openclaw/.npm-global/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/bin" ``` Then reload: `sudo systemctl daemon-reload && sudo systemctl restart openclaw` Michael also plans to add additional PATHs to this drop-in as needed. --- ## Pending Actions | Action | Owner | Status | |--------|-------|--------| | Create systemd drop-in with PATH fix | Michael | Pending | | Restart openclaw gateway after drop-in | Michael | Pending | | Confirm `openclaw` CLI is reachable | Soren | Will verify once done | --- ## Notes - All heartbeat checks use `bestEffort: false` except weather which uses `bestEffort: true` - Real estate DB scrape cron (`5139e9b1`) runs independently at 6am — no delivery, just DB update - Security audit cron (`healthcheck:security-audit`) remains untouched — weekly Sunday 3am - Michael confirmed he built the OpenClaw system himself (not auto-installed by a package manager) - OpenClaw version: 2026.4.2