๐Ÿงฌ pulse

Family scheduler. Compiles each cell's HEARTBEAT.md into a crontab. Linux cron fires; pulse just keeps the file in sync. Generated 2026-06-15 18:30:12.

last tick
4m ago
scheduled
17 across 7 cells
inbox
0
misses (24h)
6

active schedules

statuscellcron (mountain)next firelast firemessage
โœ“ fired zero-advisor-jerry */15 * * * * 2026-06-15 18:45:00 2026-06-15 18:30:01 (158ms) drain events since your cursor and act on anything new (RUNBOOK ยง2) โ€” no-op if nothing's new
โœ“ fired zero-advisor-pete */15 * * * * 2026-06-15 18:45:00 2026-06-15 18:30:01 (177ms) drain events since your cursor and act on anything new (RUNBOOK ยง2); no-op if nothing new
โœ“ fired zero-mother */30 * * * * 2026-06-15 19:00:00 2026-06-15 18:30:01 (178ms) run the steward pass โ€” execute .claude/skills/steward/SKILL.md: one deterministic sweep (scripts/steward-sweep.sh via mac_exec), then judge the summary. quiet fleet โ†’ silent no-op.
โœ“ fired zero-delta-co-land 0 */12 * * * 2026-06-16 00:00:00 2026-06-15 12:00:01 (1.0s) county-level land & access re-interpret pass: pull current land facts from zero-delta-co-market, refresh prior findings, log only material changes to findings_log (mode=push) and publish (RUNBOOK ยง5); no change โ†’ write nothing, end the turn
โœ“ fired zero-delta-co-water-rights 0 0 * * * 2026-06-16 00:00:00 2026-06-15 00:00:01 (1.1s) good morning โ€” county-level re-interpret pass (RUNBOOK ยง6): re-ask the market cell (zero-delta-co-market) for material county-wide water changes plus Convex basics, log material in-domain findings to findings_log. No change โ†’ no-op, write/send nothing.
โœ“ fired zero-delta-co-market 0 3 * * * 2026-06-16 03:00:00 2026-06-15 03:00:01 (986ms) zeros pass (9 UTC = 3am Mountain summer): drain savedListings:pendingZeros and run the daily watch pass per skills/homezero/ZEROS.md.
โœ“ fired zero-abstractor 0 4 * * * 2026-06-16 04:00:00 2026-06-15 04:00:01 (3.7s) good morning โ€” run dream to consolidate memory, wiki, and mentality, then republish your brain: bun publish-brain.ts
โœ— missed zero-advisor-jerry 0 4 * * * 2026-06-16 04:00:00 expected 2026-06-15 04:00:00 dream โ€” consolidate memory, wiki, and mentality
โœ— missed zero-advisor-pete 0 4 * * * 2026-06-16 04:00:00 expected 2026-06-15 04:00:00 dream โ€” consolidate memory, wiki, and mentality
โœ“ fired zero-delta-co-land 0 4 * * * 2026-06-16 04:00:00 2026-06-15 04:00:01 (2.0s) dream โ€” consolidate memory, wiki, and mentality
โœ“ fired zero-delta-co-market 0 4 * * * 2026-06-16 04:00:00 2026-06-15 04:00:01 (1.3s) dream โ€” consolidate memory, wiki, and mentality.
โœ“ fired zero-delta-co-water-rights 0 4 * * * 2026-06-16 04:00:00 2026-06-15 04:00:01 (2.8s) dream โ€” consolidate memory, wiki, and mentality.
โœ“ fired zero-mother 0 4 * * * 2026-06-16 04:00:00 2026-06-15 04:00:01 (176ms) dream consolidation โ€” run the dream skill: re-balance memory, wiki, and mentality from recent signal.
โœ— missed zero-advisor-jerry 0 7 * * * 2026-06-16 07:00:00 expected 2026-06-15 07:00:00 good morning โ€” assemble the daily briefing and send it if the buyer's tempo and engagement warrant (RUNBOOK ยง8); a quiet day is a two-line or held briefing
โœ— missed zero-advisor-pete 0 7 * * * 2026-06-16 07:00:00 expected 2026-06-15 07:00:00 assemble the daily briefing and send if the buyer tempo and engagement warrant (RUNBOOK ยง8); a quiet day is a two-line or held briefing. [13:00 UTC = 7am Mountain MDT / 6am MST winter]
โœ— missed zero-advisor-jerry 0 10 * * 0 2026-06-21 10:00:00 expected 2026-06-14 10:00:00 Sunday weekly digest: what moved in the watched set, what the market did, what's next โ€” WhatsApp the buyer and write a takes row kind:digest (RUNBOOK ยง8)
โœ— missed zero-advisor-pete 0 10 * * 0 2026-06-21 10:00:00 expected 2026-06-14 10:00:00 weekly digest โ€” what moved in the watched set, what the market did, what you would do next; WhatsApp the buyer and log a takes row kind:digest (RUNBOOK ยง8). [Sun 16:00 UTC = 10am Mountain MDT / 9am MST winter]

recent fires

timecelllatencyresultcorr
2026-06-15 18:30:01 zero-mother 178ms ok F3PSHJN5KD
2026-06-15 18:30:01 zero-advisor-pete 177ms ok 9079J66RWM
2026-06-15 18:30:01 zero-advisor-jerry 158ms ok JVPAXB54XT
2026-06-15 18:15:01 zero-advisor-pete 154ms ok DZJYQQKZZM
2026-06-15 18:15:01 zero-advisor-jerry 144ms ok K07B5TE922
2026-06-15 18:00:01 zero-advisor-pete 168ms ok 3Q15PAKDQX
2026-06-15 18:00:01 zero-mother 156ms ok QQ0M5SMD52
2026-06-15 18:00:01 zero-advisor-jerry 148ms ok STKEJ8CPBE
2026-06-15 17:45:01 zero-advisor-pete 159ms ok JRHXTG72K4
2026-06-15 17:45:01 zero-advisor-jerry 147ms ok D3VMJESR24
2026-06-15 17:30:01 zero-mother 185ms ok NZ1HS5Z9NN
2026-06-15 17:30:01 zero-advisor-jerry 175ms ok S2PR8B0PWM
2026-06-15 17:30:01 zero-advisor-pete 156ms ok K8Q8R0P4RD
2026-06-15 17:15:01 zero-advisor-pete 963ms ok TSCJJAERZD
2026-06-15 17:15:01 zero-advisor-jerry 146ms ok 1ET3B5ZWAD
2026-06-15 17:00:01 zero-advisor-pete 180ms ok WSPRS8810T
2026-06-15 17:00:01 zero-mother 181ms ok 3T5QWQ936A
2026-06-15 17:00:01 zero-advisor-jerry 152ms ok N23A7J23YM
2026-06-15 16:45:01 zero-advisor-pete 158ms ok 0M43CCWXAG
2026-06-15 16:45:01 zero-advisor-jerry 126ms ok 82AKXKVNNR

how pulse works

fleet cell edits HEARTBEAT.md
   โ”‚  (PostToolUse hook)
   โ–ผ
proxy /heartbeat-changed
   โ”‚
   โ–ผ
~/.cells/pulse-inbox/  โ† Mac-side queue, survives pulse hibernating
   โ”‚  every ~60s
   โ–ผ
[cells-pulse cell] claude --print runs the pulse skill:
   drain inbox โ†’ translate prose โ†’ cron lines
   save-schedule โ†’ writes /etc/cron.d/pulse-schedules
   render โ†’ refresh state/heartbeats.md digest
   render-dashboard โ†’ writes this page
   โ”‚
   โ–ผ
/etc/cron.d/pulse-schedules  โ† Linux cron evaluates every minute
   โ”‚  matched lines fire
   โ–ผ
cron-fire.sh wraps:  cells talk --await <cell> "<msg>"
   โ”‚  times the call, logs latency + exit code
   โ–ผ
/root/.cells/logs/cron-fires.log

Push for schedule updates, pull for firing. When a cell edits its HEARTBEAT.md, a hook pushes the change to pulse via the proxy. Pulse drains that inbox every ~60s, parses prose like "every weekday at 8am" into a 5-field crontab line, and writes it into /etc/cron.d/pulse-schedules. From there Linux cron is the fire engine โ€” pulse is just the prose-to-cron compiler.

Cron is evaluated in Mountain time. Pulse's cell is pinned to America/Denver, so 0 8 * * * means 8am MDT/MST and DST is handled by the OS. Prose with explicit UTC times gets converted.

State survives hibernation. The inbox is Mac-side (~/.cells/pulse-inbox/); cells can push schedule updates even while pulse-cc is asleep, and pulse drains the backlog when it wakes. Per-cell parsed schedules live at pulse-cache/<cell>.json; the firing record is the cron-fires log inside the pulse cell.

Latency is the cell's response time. cells talk waits for the receiving cell to actually ack the message (default 180s timeout). A small latency means the cell was running and responsive. A latency near 180s usually means the talk timed out โ€” the cell may have been hibernating and failed to wake. The "missed" status above means cron should have fired but no log entry showed up at all.

โ† fleet