Needs attention

Sites

Media hub (Vercel)

OK

HTTP 307 in 1328 ms

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

Media hub cron endpoint (Vercel to Turso)

OK

HTTP 200: {"ran":"2026-09-15T08:15:59.688Z","step":"ping"}

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

Opportunity API (/api/mobile/v1/feed)

OK

auth wall answering (HTTP 401) in 179 ms

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

Media Intel team page (Cloudflare)

OK

up; page says "Updated 15 Sep 2026" (9.3 h ago)

24 h 95.3% · 7 d 95.3% · in this state since 15 Sept, 08:16 · 127 ms

Team page functions (D1 notes and submissions)

OK

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

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

Client portal (onboarding.launchlink.co)

OK

HTTP 200 in 1282 ms

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

Team dash (Cloudflare)

OK

HTTP 200 in 78 ms

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

Live processes on the Mac

WhatsApp bridge

OK

up; last message 3 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 monitoring began

Team dash refresh daemon

OK

last tick 0 min ago

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

Scheduled jobs

Gmail media intel (06:30 daily)

OK

last intel file 2.0 h ago

24 h 96.9% · 7 d 96.9% · in this state since 15 Sept, 08:06

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

OK

last stores file 10 h ago

24 h 96.9% · 7 d 96.9% · in this state since 15 Sept, 08:06

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

OK

last run 11 h ago; digest sent

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

Opportunity poll (every 15 min)

OK

last poll 11 min ago; email: 63 seen, 0 new, 63 updated, 0 already known, 0 dupes, 2 expired | sourcebottle: 206 seen, 0 new, 193 updated, 13 already known, 0 dupes,

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

GitHub Actions opportunity poll (hourly, off the Mac)

Check

last run 2.4 h ago, success

24 h 100.0% · 7 d 100.0% · in this state since 15 Sept, 17:12

How to fix

gh run list --workflow=poll-opportunities.yml in media-hub. A failure with 401 = CRON_SECRET secret drifted from .deploy-secrets; 'disabled workflow' = GitHub switched it off after repeated failures or billing (gh workflow enable). The local launchd poll keeps the feed alive meanwhile.

GitHub Actions watchdog (checks this monitor every 30 min)

Down

last run 2.3 h ago, success

24 h 86.7% · 7 d 86.7% · in this state since 15 Sept, 17:54

How to fix

gh run list --workflow=watchdog.yml in media-hub. It alerts by email if RESEND_API_KEY is a repo secret, otherwise by opening a GitHub issue.

Verification sweep (daily)

Check

last pass 24 h ago; [2026-09-14 09:00] pass 1/1 unreadable response / [2026-09-14 09:00] adjudicate settled 0 · disagreed 0 · for a person 3

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 1.1 h ago

24 h 100.0% · 7 d 100.0% · in this state since 15 Sept, 09:09

Team dash morning brief (6x/day)

OK

last log write 1.1 h ago; launchd exits [1,0,0,0,0,0]

24 h 100.0% · 7 d 100.0% · in this state since 15 Sept, 08:58

Headless claude (what every extractor job runs on)

OK

claude -p answered

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

launchd registrations

OK

9 jobs loaded

24 h 98.4% · 7 d 98.4% · in this state since 15 Sept, 08:05

Production data (Turso)

Turso production database

OK

reachable in 2498 ms; 12,148 journalists; 2521 staged changes awaiting review

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

Article ingest (Vercel cron, nightly)

Check

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

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

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)

Check

6 inboxes, last scan 14 h ago; needs attention: annmargaret@launchlink.co (needs_reauth)

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

How to fix

needs_reauth = Google refresh token expired (invalid_grant). That person signs in to the hub and reconnects their inbox under Settings.

Opportunity engine (callouts arriving)

OK

newest callout 2.4 h ago; 112 in last 24 h; email:haro 11 h ago, email:qwoted 34.1 days ago, sourcebottle 2.4 h ago

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

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

Down

last 24 h: 0 delivered, 474 failed of 474; last response: 400 {"error":"No events to ingest"}

24 h 1.6% · 7 d 1.6% · in this state since 15 Sept, 08:05

How to fix

Pressto's receiver answers 400 'No events to ingest' to the documented {id,event,at,data} body and to an {events:[...]} wrapper, signature valid. That is a contract mismatch on the Pressto side (Joe): the receiver needs to accept the shape in media-hub/docs/PRESSTO-WEBHOOKS.md, or say what it wants.

Credits, keys and sessions

OpenRouter credit (web lookups, verification, chat)

Check

US$18.67 left; burning about US$3.08/day (about 6 days)

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

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 21 h 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
GitHub Actions watchdog (checks this monitor every 30 min)15 Sept, 18:05openlast run 2.2 h ago, success
Pressto webhook deliveries (hub to api.yaarn.ai)15 Sept, 08:06openlast 24 h: 0 delivered, 402 failed of 402; last response: 400 {"error":"No events to ingest"}
launchd registrations15 Sept, 08:0515 Sept, 08:06not loaded: co.launchlink.media-status
Savings, events, trends + team page deploy (06:45 daily)15 Sept, 08:0515 Sept, 08:16last stores file 4.1 days ago; last exit 1; log: There's an issue with the selected model (fable[1m]). It may not exist or you may not have
Gmail media intel (06:30 daily)15 Sept, 08:0515 Sept, 08:16last intel file 3.7 days ago; last exit 1; log: There's an issue with the selected model (fable[1m]). It may not exist or you may not have a
Media Intel team page (Cloudflare)15 Sept, 08:0515 Sept, 08:27up; page says "Updated 11 Sep 2026" (4.0 days ago)

Automatic restarts (last 15)

ComponentWhenAction
None needed yet.