Needs attention

Sites

Media hub on Vercel (cron endpoint to Turso)

OK

HTTP 200: {"ran":"2026-11-14T18:30:19.785Z","step":"ping"}

24 h 83.3% · 7 d 97.8% · in this state since 14 Nov, 08:39 · 10067 ms

Media Intel team page (Cloudflare)

OK

up; page says "Updated 15 Nov 2026" (-810 min ago)

24 h 91.7% · 7 d 98.4% · in this state since 13 Nov, 11:27 · 206 ms

Team page functions (D1 notes and submissions)

OK

HTTP 400 {"error":"opp required"}

24 h 100.0% · 7 d 98.9% · in this state since 12 Nov, 08:23 · 53 ms

Client portal (onboarding.launchlink.co)

OK

HTTP 200 in 258 ms

24 h 100.0% · 7 d 98.4% · in this state since 12 Nov, 09:39 · 258 ms

Cycle engine (Railway)

Down

up; 0 articles, 0 live cycles, 80/90 feeds healthy, llm api (gemini-flash-latest); disk 82% used (db 344 MB, 79 MB free)

24 h 0.0% · 7 d 0.0% · in this state since monitoring began · 298 ms

How to fix

cd ~/Developer/cycle-engine && railway status. 'Application not found' = no active deployment. If railway up says 'Your trial has expired', pick a plan at railway.com (Hobby is enough) and redeploy: railway up --service cycle-engine --detach. A full volume kills SQLite; the Janitor agent now prunes at boot and every 6 h, and a 'disk_warning' in the agent feed means grow the volume in the Railway dashboard.

Team dash (Cloudflare)

OK

HTTP 200 in 154 ms

24 h 100.0% · 7 d 98.9% · in this state since 12 Nov, 08:23 · 154 ms

Live processes on the Mac

WhatsApp bridge

OK

up; last message 31 min ago

24 h 100.0% · 7 d 100.0% · in this state since monitoring began

Daily brief action server (:3001)

OK

answering (HTTP 404)

24 h 100.0% · 7 d 100.0% · in this state since 13 Nov, 11:27

Team dash refresh daemon

OK

last tick 1 min ago

24 h 100.0% · 7 d 99.5% · in this state since 14 Nov, 08:39

Scheduled jobs

Opportunity poll actually running (any clock)

OK

last poll finished 9 min ago

24 h 100.0% · 7 d 100.0% · in this state since monitoring began

Gmail media intel (06:30 daily)

OK

last intel file 23 min ago

24 h 100.0% · 7 d 100.0% · in this state since 14 Nov, 08:39

Savings, events, trends + team page deploy (06:45 daily)

OK

last stores file 2.2 h ago

24 h 100.0% · 7 d 100.0% · in this state since 14 Nov, 08:39

Media hub daily refresh + team digest email (07:15 daily)

Check

last run 3.2 h ago; digest FAILED; [2026-11-14 08:55:17] digest failed (continuing)

24 h 100.0% · 7 d 100.0% · in this state since 13 Nov, 19:10

How to fix

scripts/daily.sh in media-hub. 'ENOTFOUND ...turso.io' = DNS/network dropped mid-run (travelling wifi); the digest simply retries tomorrow. Re-send today: cd media-hub && set -a && . .turso-env && set +a && npx tsx scripts/media-digest.ts

Opportunity poll (every 15 min)

OK

last poll 12 min ago; email: 80 seen, 0 new, 49 updated, 31 already known, 0 dupes, 22 expir | sourcebottle: 343 seen, 0 new, 298 updated, 45 already known, 0 dupes,

24 h 91.7% · 7 d 98.4% · in this state since 15 Nov, 04:59

GitHub Actions opportunity poll (backup clock)

OK

last run 1.9 h ago, success

24 h 100.0% · 7 d 100.0% · in this state since 13 Nov, 18:39

GitHub Actions watchdog (backup, fires every few hours)

OK

last run 4.6 h ago, success

24 h 100.0% · 7 d 100.0% · in this state since 13 Nov, 11:27

Verification sweep (daily)

Check

last pass 2.1 days ago; [2026-11-12 08:20] pass 1/1 unreadable response / [2026-11-12 08:20] adjudicate adjudication unreadable

24 h 100.0% · 7 d 100.0% · in this state since monitoring began

How to fix

'unreadable response' = the cron verify step timed out or returned non-JSON (often OpenRouter out of credit, or a 300 s Vercel window overrun). Check the credits card below first.

Felicia's daily brief (6x/day)

OK

brief last written 21 min ago

24 h 91.7% · 7 d 99.5% · in this state since 15 Nov, 04:59

Team dash morning brief (6x/day)

OK

last log write 23 min ago; launchd exits [1,0,6,6,6,6]

24 h 100.0% · 7 d 100.0% · in this state since 14 Nov, 08:39

Headless claude (what every extractor job runs on)

OK

claude -p answered

24 h 91.7% · 7 d 96.2% · in this state since 13 Nov, 11:27

launchd registrations

OK

9 jobs loaded

24 h 100.0% · 7 d 100.0% · in this state since monitoring began

Production data (Turso)

Turso production database

OK

reachable in 1021 ms; 3525 staged changes awaiting review

24 h 91.7% · 7 d 97.8% · in this state since 13 Nov, 11:27 · 1021 ms

Article ingest (Vercel cron, nightly)

Check

last feed run 15 h ago; 60/69 feeds healthy; failing: AdNews, Banking Day, Business News Australia, HR Leader, Information Age, InnovationAus, InvestorDaily, Karryon, The New Daily

24 h 100.0% · 7 d 100.0% · in this state since 28 Oct, 06:08

How to fix

Feeds returning 403/404 have moved or now block bots. Fix the URL in the sources table (scripts/discover-feeds.ts) or disable the source.

Mailbox scans (Vercel cron, nightly)

OK

7 inboxes, last scan 15 h ago

24 h 100.0% · 7 d 100.0% · in this state since 28 Oct, 06:08

Opportunity engine (callouts arriving)

OK

newest callout 20 h ago; 39 in last 24 h; email:haro 20 h ago, sourcebottle 39 h ago

24 h 90.9% · 7 d 99.5% · in this state since 14 Nov, 08:39

Pressto webhook deliveries (hub to api.yaarn.ai)

OK

nothing sent in the last 24 h

24 h 100.0% · 7 d 100.0% · in this state since 7 Nov, 09:40

Credits, keys and sessions

OpenRouter credit (web lookups, verification, chat)

Check

US$29.40 left; burning about US$2.06/day (about 14 days)

24 h 91.7% · 7 d 59.1% · in this state since 13 Nov, 19:10

How to fix

Top up at openrouter.ai/settings/credits. At zero, every web feature returns empty with no error (402 swallowed), verification stalls and the sweep logs 'unreadable response'.

Substack session (On Background, Get Featured)

OK

newest post pulled 5.3 days ago

24 h 100.0% · 7 d 100.0% · in this state since monitoring began

Resend (digest + portal email)

OK

key present in media-hub/.env.local (delivery proven by the digest job above)

24 h 100.0% · 7 d 100.0% · in this state since monitoring began

Incidents (last 25)

ComponentStartedEndedWhat was seen
Felicia's daily brief (6x/day)15 Nov, 04:5915 Nov, 05:30brief last written 40 h ago; last exit 1; log: API Error: Your computer went to sleep mid-response. The response above may be incomplete.
Opportunity engine (callouts arriving)14 Nov, 08:3915 Nov, 04:59TypeError: fetch failed
Opportunity poll (every 15 min)14 Nov, 08:3915 Nov, 04:59last poll 14 h ago; email: 120 seen, 0 new, 75 updated, 43 already known, 0 dupes, 25 expi | sourcebottle: 358 seen, 0 new, 304 updated, 43
Media hub on Vercel (cron endpoint to Turso)14 Nov, 08:3915 Nov, 04:59This operation was aborted
OpenRouter credit (web lookups, verification, chat)13 Nov, 11:2713 Nov, 13:01fetch failed
Turso production database13 Nov, 11:2713 Nov, 13:01fetch failed
Headless claude (what every extractor job runs on)13 Nov, 11:2713 Nov, 13:01no answer: exit 143
Media Intel team page (Cloudflare)13 Nov, 11:2713 Nov, 13:01fetch failed
Media hub on Vercel (cron endpoint to Turso)13 Nov, 11:2713 Nov, 13:01fetch failed
Client portal (onboarding.launchlink.co)12 Nov, 09:3912 Nov, 10:11fetch failed
Turso production database12 Nov, 08:2312 Nov, 09:09fetch failed
Team dash (Cloudflare)12 Nov, 08:2312 Nov, 09:09fetch failed
Client portal (onboarding.launchlink.co)12 Nov, 08:2312 Nov, 09:09fetch failed
Team page functions (D1 notes and submissions)12 Nov, 08:2312 Nov, 09:09fetch failed
Media Intel team page (Cloudflare)12 Nov, 08:2312 Nov, 09:09fetch failed
Media hub on Vercel (cron endpoint to Turso)12 Nov, 08:2312 Nov, 09:09fetch failed
Headless claude (what every extractor job runs on)12 Nov, 04:4112 Nov, 08:23no answer: You've hit your session limit · resets 12:50pm (America/Los_Angeles)
Opportunity poll (every 15 min)12 Nov, 03:0312 Nov, 04:10last poll 2.9 h ago
Headless claude (what every extractor job runs on)11 Nov, 02:1911 Nov, 07:13no answer: You've hit your session limit · resets 9:10am (America/Los_Angeles)
OpenRouter credit (web lookups, verification, chat)10 Nov, 08:0212 Nov, 09:09US$8.08 left; burning about US$2.32/day (about 3 days)
OpenRouter credit (web lookups, verification, chat)10 Nov, 05:5710 Nov, 06:52fetch failed
Turso production database10 Nov, 05:5710 Nov, 06:52fetch failed
Team dash (Cloudflare)10 Nov, 05:5710 Nov, 06:52fetch failed
Client portal (onboarding.launchlink.co)10 Nov, 05:5710 Nov, 06:52fetch failed
Team page functions (D1 notes and submissions)10 Nov, 05:5710 Nov, 06:52fetch failed

Automatic restarts (last 15)

ComponentWhenAction
Verification sweep (daily)15 Nov, 05:30co.launchlink.media-sweep
Felicia's daily brief (6x/day)15 Nov, 04:59co.launchlink.personal-brief
Opportunity poll (every 15 min)15 Nov, 04:59co.launchlink.opportunities
Felicia's daily brief (6x/day)14 Nov, 09:44co.launchlink.personal-brief
Savings, events, trends + team page deploy (06:45 daily)14 Nov, 09:44co.launchlink.intel-stores
Gmail media intel (06:30 daily)14 Nov, 09:44co.launchlink.media-intel
Team dash refresh daemon14 Nov, 09:44com.launchlink.refresh-daemon
Opportunity poll (every 15 min)13 Nov, 11:35co.launchlink.opportunities
Daily brief action server (:3001)13 Nov, 11:35co.launchlink.action-server
Opportunity poll (every 15 min)12 Nov, 03:20co.launchlink.opportunities
Team dash refresh daemon12 Nov, 03:20com.launchlink.refresh-daemon
Savings, events, trends + team page deploy (06:45 daily)10 Nov, 12:45co.launchlink.intel-stores
Verification sweep (daily)10 Nov, 08:03co.launchlink.media-sweep
Team dash refresh daemon9 Nov, 04:07com.launchlink.refresh-daemon
Opportunity poll (every 15 min)8 Nov, 11:52co.launchlink.opportunities