← back to George Gmail
Add launchd KeepAlive supervisor for george-gmail :9850 (durable fix for the unsupervised-death outage)
918647cd0afe1ebf6b2d918c82e0e863df802bfc · 2026-06-17 11:56:15 -0700 · Steve Abrams
Tracked plist + install note. Not bootstrapped here — Steve runs the bootstrap
(starts the email service + touches launchd). RunAtLoad+KeepAlive so the :9850
send service self-respawns; daily-overnight-skus + idea-loop-digest were only
failing because this send path died.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Files touched
A KEEPALIVE-INSTALL.mdA com.steve.george-gmail.plist
Diff
commit 918647cd0afe1ebf6b2d918c82e0e863df802bfc
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Wed Jun 17 11:56:15 2026 -0700
Add launchd KeepAlive supervisor for george-gmail :9850 (durable fix for the unsupervised-death outage)
Tracked plist + install note. Not bootstrapped here — Steve runs the bootstrap
(starts the email service + touches launchd). RunAtLoad+KeepAlive so the :9850
send service self-respawns; daily-overnight-skus + idea-loop-digest were only
failing because this send path died.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---
KEEPALIVE-INSTALL.md | 25 +++++++++++++++++++++++++
com.steve.george-gmail.plist | 44 ++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 69 insertions(+)
diff --git a/KEEPALIVE-INSTALL.md b/KEEPALIVE-INSTALL.md
new file mode 100644
index 0000000..f0c9fbb
--- /dev/null
+++ b/KEEPALIVE-INSTALL.md
@@ -0,0 +1,25 @@
+# george-gmail :9850 — launchd KeepAlive supervisor
+
+The send service (`server.js`, :9850) is a fleet send-path dependency
+(daily-overnight-skus, idea-loop-digest, contact-mailer, launchd reminders).
+It died unsupervised on 2026-06-17, taking the morning send jobs down. This
+plist keeps it up (RunAtLoad + KeepAlive) so that can't recur.
+
+Tracked copy: `com.steve.george-gmail.plist` (live copy lives in
+`~/Library/LaunchAgents/`).
+
+## Install (Steve runs — starts the email service + touches launchd)
+```sh
+cp com.steve.george-gmail.plist ~/Library/LaunchAgents/
+launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.steve.george-gmail.plist
+launchctl kickstart gui/$(id -u)/com.steve.george-gmail
+curl -s -m3 -o /dev/null -w 'george-gmail :9850 -> HTTP %{http_code}\n' http://localhost:9850/
+```
+Once up, `daily-overnight-skus` + `idea-loop-digest` go green on their next fire.
+
+## Stop / reload
+```sh
+launchctl kickstart -k gui/$(id -u)/com.steve.george-gmail # restart
+launchctl bootout gui/$(id -u)/com.steve.george-gmail # stop+unload
+```
+Logs: `~/Library/Logs/george-gmail.{out,err}.log`.
diff --git a/com.steve.george-gmail.plist b/com.steve.george-gmail.plist
new file mode 100644
index 0000000..21f79a1
--- /dev/null
+++ b/com.steve.george-gmail.plist
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>Label</key>
+ <string>com.steve.george-gmail</string>
+
+ <!-- George email-send service (:9850) — fleet send path for daily-overnight-skus,
+ idea-loop-digest, contact-mailer, launchd reminders, etc. Self-finds creds at
+ ~/Projects/Designer-Wallcoverings/DW-MCP/.env via $HOME. -->
+ <key>ProgramArguments</key>
+ <array>
+ <string>/usr/local/bin/node</string>
+ <string>/Users/stevestudio2/Projects/george-gmail/server.js</string>
+ </array>
+
+ <key>WorkingDirectory</key>
+ <string>/Users/stevestudio2/Projects/george-gmail</string>
+
+ <key>EnvironmentVariables</key>
+ <dict>
+ <key>PORT</key>
+ <string>9850</string>
+ <key>HOME</key>
+ <string>/Users/stevestudio2</string>
+ <key>PATH</key>
+ <string>/usr/local/bin:/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
+ </dict>
+
+ <!-- Keep it up: start at load/login and respawn if it dies (the whole point —
+ it died unsupervised on 2026-06-17, taking the morning send jobs down). -->
+ <key>RunAtLoad</key>
+ <true/>
+ <key>KeepAlive</key>
+ <true/>
+ <key>ThrottleInterval</key>
+ <integer>10</integer>
+
+ <key>StandardOutPath</key>
+ <string>/Users/stevestudio2/Library/Logs/george-gmail.out.log</string>
+ <key>StandardErrorPath</key>
+ <string>/Users/stevestudio2/Library/Logs/george-gmail.err.log</string>
+</dict>
+</plist>
← 8c22e56 secret-strip george-gmail: env-first the hardcoded George ba
·
back to George Gmail
·
George external-send guard: block outbound sends to non-Stev a42bc74 →