Needs attention

Sites

Media hub on Vercel (cron endpoint to Turso)

OK

HTTP 200: {"ran":"2026-11-13T07:08:55.147Z","step":"ping"}

24 h 98.0% · 7 d 98.1% · in this state since 13 Nov, 11:27 · 697 ms

Media Intel team page (Cloudflare)

OK

up; page says "Updated 13 Nov 2026" (-51 min ago)

24 h 98.0% · 7 d 98.1% · in this state since 13 Nov, 11:27 · 160 ms

Team page functions (D1 notes and submissions)

OK

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

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

Client portal (onboarding.launchlink.co)

OK

HTTP 200 in 342 ms

24 h 100.0% · 7 d 98.1% · in this state since 12 Nov, 09:39 · 342 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 · 78 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 205 ms

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

Live processes on the Mac

WhatsApp bridge

OK

up; last message 2 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 2 min ago

24 h 100.0% · 7 d 99.5% · in this state since 12 Nov, 03:03

Scheduled jobs

Opportunity poll actually running (any clock)

OK

last poll finished 0 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 16 h ago

24 h 100.0% · 7 d 100.0% · in this state since 9 Nov, 20:17

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

OK

last stores file 16 h ago

24 h 100.0% · 7 d 100.0% · in this state since 10 Nov, 12:44

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

OK

last run 16 h ago; digest sent

24 h 100.0% · 7 d 100.0% · in this state since 11 Nov, 20:58

Opportunity poll (every 15 min)

OK

last poll 1 min ago; email: 120 seen, 0 new, 77 updated, 43 already known, 0 dupes, 25 expi

24 h 100.0% · 7 d 98.6% · in this state since 13 Nov, 14:04

GitHub Actions opportunity poll (backup clock)

Check

last run 7.0 h ago, success

24 h 100.0% · 7 d 100.0% · in this state since 13 Nov, 16:50

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 (backup, fires every few hours)

OK

last run 4.1 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 15 h 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 5.3 h ago

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

Team dash morning brief (6x/day)

OK

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

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

Headless claude (what every extractor job runs on)

OK

claude -p answered

24 h 98.0% · 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 709 ms; 3522 staged changes awaiting review

24 h 98.0% · 7 d 97.6% · in this state since 13 Nov, 11:27 · 709 ms

Article ingest (Vercel cron, nightly)

Check

last feed run 3.8 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 3.5 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 4.1 h ago; 84 in last 24 h; email:haro 8.6 h ago, sourcebottle 4.1 h ago

24 h 100.0% · 7 d 100.0% · in this state since 9 Nov, 08:51

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

OK

last 24 h: 265 delivered, 0 failed of 265; last response: 200 {"received":true}

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)

OK

US$31.34 left; burning about US$2.07/day (about 15 days)

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

Substack session (On Background, Get Featured)

OK

newest post pulled 3.8 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
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
Media Intel team page (Cloudflare)10 Nov, 05:5710 Nov, 06:52fetch failed
Media hub on Vercel (cron endpoint to Turso)10 Nov, 05:5710 Nov, 06:52This operation was aborted
OpenRouter credit (web lookups, verification, chat)9 Nov, 08:189 Nov, 08:51fetch failed
Turso production database9 Nov, 08:189 Nov, 08:51fetch failed

Automatic restarts (last 15)

ComponentWhenAction
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
Felicia's daily brief (6x/day)7 Nov, 01:57co.launchlink.personal-brief
Team dash morning brief (6x/day)6 Nov, 22:24co.launchlink.briefing.0900
Verification sweep (daily)6 Nov, 19:21co.launchlink.media-sweep
Opportunity poll (every 15 min)6 Nov, 19:21co.launchlink.opportunities
Opportunity poll (every 15 min)6 Nov, 10:55co.launchlink.opportunities
Team dash morning brief (6x/day)6 Nov, 01:31co.launchlink.briefing.0900
Felicia's daily brief (6x/day)6 Nov, 01:31co.launchlink.personal-brief