Media hub (Vercel)
Downfetch failed
How to fix
Vercel deploy or DNS. Check vercel.com for the media-hub project; a new deploy mints a new URL, so the alias may need repointing.
fetch failed
Vercel deploy or DNS. Check vercel.com for the media-hub project; a new deploy mints a new URL, so the alias may need repointing.
fetch failed
This proves the deployed app can authorise a cron call and open the production database. 401 = CRON_SECRET mismatch between .deploy-secrets and Vercel env. 500 = Turso credentials on Vercel.
fetch failed
Consumers (Pressto, the phone app) pull from here with an x-api-key. Anything but 200/401 means the route is gone or the app is down.
fetch failed
The page is regenerated and deployed by the 6:45 intel-stores job. Stale page = that job stopped before its deploy step. Read stores/intel-stores.log.
fetch failed
Pages Functions only deploy when wrangler runs from intel-suite/ (the dir with functions/). If this 404s, the last deploy ran from the wrong directory.
fetch failed
Vercel project client-portal. Deploy command and secrets are in the client-portal memory note.
fetch failed; volume 99% full
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.
HTTP 200 in 4634 ms
up; last message 17 min ago
not answering (dashboard buttons will not work)
launchctl kickstart -k gui/$(id -u)/co.launchlink.action-server
last tick 3 min ago
last intel file 1.5 h ago
last stores file 40 h ago
Runs stores/intel-stores.sh. The extractor step is now non-fatal, so the page still regenerates and deploys even if Gmail mining fails. Re-run: bash stores/intel-stores.sh
last run 17 h ago; digest FAILED; [2026-09-15 22:18:11] digest failed (continuing)
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
last poll 2 min ago; [TypeError: fetch failed] {
scripts/poll-cron.sh writes to production Turso and is now the BACKUP poller; the hourly GitHub Actions job below is the primary. Zero yield on SourceBottle for a whole day usually means their page changed, not that there were no callouts.
last run 4.7 h ago, success
last run 4.4 h ago, success
last pass 3.9 h ago; [2026-09-16 11:37] pass 1/1 unreadable response / [2026-09-16 11:38] adjudicate settled 0 · disagreed 0 · for a person 0
'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.
brief last written 31 h ago; last exit 1; log: API Error: Unable to connect to API (ConnectionRefused)
refresh.sh needs --permission-mode acceptEdits and current MCP tool names; a stale file with no error usually means the final Write was denied.
last log write 10 min ago; launchd exits [6,1,6,6,6,6]
no answer: You've hit your session limit · resets 5:10pm (Europe/Lisbon)
If the message is 'issue with the selected model', ~/.claude/settings.json names a model the CLI at /opt/homebrew/bin/claude cannot use; scripts pin --model opus for this reason. 'Unable to connect to API' = network or auth (claude login).
9 jobs loaded
fetch failed
ENOTFOUND = DNS/network from this Mac. 401 = token rotated; refresh media-hub/.turso-env. Vercel keeps working on its own copy of the credentials.
fetch failed
newest post pulled 2.1 days ago
key present in media-hub/.env.local (delivery proven by the digest job above)
| Component | Started | Ended | What was seen |
|---|---|---|---|
| OpenRouter credit | 17 Sept, 00:32 | open | fetch failed |
| Turso production database | 17 Sept, 00:32 | open | fetch failed |
| Headless claude (what every extractor job runs on) | 17 Sept, 00:32 | open | no answer: You've hit your session limit · resets 5:10pm (Europe/Lisbon) |
| Client portal (onboarding.launchlink.co) | 17 Sept, 00:32 | open | fetch failed |
| Team page functions (D1 notes and submissions) | 17 Sept, 00:32 | open | fetch failed |
| Media Intel team page (Cloudflare) | 17 Sept, 00:32 | open | fetch failed |
| Opportunity API (/api/mobile/v1/feed) | 17 Sept, 00:32 | open | fetch failed |
| Media hub cron endpoint (Vercel to Turso) | 17 Sept, 00:32 | open | fetch failed |
| Media hub (Vercel) | 17 Sept, 00:32 | open | fetch failed |
| Team dash (Cloudflare) | 17 Sept, 00:15 | 17 Sept, 00:32 | fetch failed |
| Cycle engine (Railway) | 17 Sept, 00:15 | open | fetch failed |
| Turso production database | 16 Sept, 23:55 | 16 Sept, 23:58 | fetch failed |
| GitHub Actions watchdog (backup, fires every few hours) | 16 Sept, 23:50 | 16 Sept, 23:55 | last run 3.6 h ago, success |
| OpenRouter credit | 16 Sept, 23:43 | 16 Sept, 23:50 | fetch failed |
| Media hub cron endpoint (Vercel to Turso) | 16 Sept, 23:43 | 16 Sept, 23:50 | This operation was aborted |
| Media hub (Vercel) | 16 Sept, 23:43 | 16 Sept, 23:50 | fetch failed |
| Turso production database | 16 Sept, 23:29 | 16 Sept, 23:50 | fetch failed |
| GitHub Actions watchdog (backup, fires every few hours) | 16 Sept, 23:29 | 16 Sept, 23:43 | last run 3.3 h ago, success |
| Media Intel team page (Cloudflare) | 16 Sept, 23:29 | 16 Sept, 23:43 | This operation was aborted |
| Team dash morning brief (6x/day) | 16 Sept, 23:15 | 17 Sept, 00:32 | last log write 30 h ago; launchd exits [6,6,6,6,6,6] |
| Felicia's daily brief (6x/day) | 16 Sept, 23:15 | open | brief last written 30 h ago; last exit 1; log: API Error: Unable to connect to API (ConnectionRefused) |
| Client portal (onboarding.launchlink.co) | 16 Sept, 23:15 | 16 Sept, 23:29 | This operation was aborted |
| GitHub Actions opportunity poll (backup clock) | 16 Sept, 22:50 | 16 Sept, 23:55 | last run 3.0 h ago, success |
| GitHub Actions watchdog (backup, fires every few hours) | 16 Sept, 22:25 | 16 Sept, 23:15 | last run 2.2 h ago, success |
| OpenRouter credit | 16 Sept, 21:50 | 16 Sept, 22:00 | fetch failed |
| Component | When | Action |
|---|---|---|
| Daily brief action server (:3001) | 17 Sept, 00:34 | co.launchlink.action-server |
| Team dash morning brief (6x/day) | 17 Sept, 00:18 | co.launchlink.briefing.0900 |
| Gmail media intel (06:30 daily) | 16 Sept, 22:27 | co.launchlink.media-intel |
| Verification sweep (daily) | 16 Sept, 20:34 | co.launchlink.media-sweep |
| Felicia's daily brief (6x/day) | 16 Sept, 16:14 | co.launchlink.personal-brief |
| Opportunity poll (every 15 min) | 16 Sept, 16:14 | co.launchlink.opportunities |
| Team dash refresh daemon | 16 Sept, 16:14 | com.launchlink.refresh-daemon |
| WhatsApp bridge | 16 Sept, 16:14 | com.launchlink.whatsapp-bridge |
| Savings, events, trends + team page deploy (06:45 daily) | 16 Sept, 14:22 | co.launchlink.intel-stores |
| Felicia's daily brief (6x/day) | 16 Sept, 09:11 | co.launchlink.personal-brief |
| Opportunity poll (every 15 min) | 16 Sept, 04:15 | co.launchlink.opportunities |
| Team dash refresh daemon | 16 Sept, 04:15 | com.launchlink.refresh-daemon |
| WhatsApp bridge | 16 Sept, 04:15 | com.launchlink.whatsapp-bridge |