/** * pm2 ecosystem entry for legal-digest-drain — scheduled (every 2 h) drain of * the digest-enrichment queue (X12: "כל יום" yomonim → Sonnet enrichment + * embedding + autolink). Migrated from a bare system crontab line to pm2 so it * appears in — and is controllable from — the /operations dashboard (run-now / * enable / disable) like every other drain. * * Pattern: cron_restart fires the script on schedule; autorestart:false → runs * once and exits (pm2 shows "stopped" between ticks — expected). The script * already serialises itself (it self-heals stale 'processing' rows), so no flock * is needed under pm2's one-shot model. * * Requires (host ~/.env via legal_mcp.config): POSTGRES_URL, VOYAGE_API_KEY, and * the local `claude` CLI on PATH (the script prepends ~/.local/bin). * * Install (once): * pm2 start /home/chaim/legal-ai/scripts/legal-digest-drain.config.cjs * pm2 save * Run now (manual): mcp-server/.venv/bin/python scripts/drain_digests.py * Schedule override: DIGEST_DRAIN_CRON (default every 2 h at :00). */ const cron = process.env.DIGEST_DRAIN_CRON || "0 */2 * * *"; module.exports = { apps: [ { name: "legal-digest-drain", cwd: "/home/chaim/legal-ai", script: "/home/chaim/legal-ai/mcp-server/.venv/bin/python", args: "scripts/drain_digests.py", env: { HOME: "/home/chaim", PYTHONUNBUFFERED: "1" }, autorestart: false, // one-shot per cron tick cron_restart: cron, max_memory_restart: "800M", }, ], };