Overseer

Last regenerated just now (2026-06-15 14:05:01 UTC) · auto-refresh every 5 min
1 issue(s)
This page shows every automation we have running. Green means working. Yellow means quiet, no recent activity, usually fine for crons that only log on error. Red means broken, needs attention.
WorkingQuietBroken

Scheduled jobs

Tasks that run on a timer.
StatusJobScheduleLast activity
Working
Weekly summary
Sunday night wrap-up of the week's automation activity.
Show technical detail
/usr/bin/python3 /home/claude-bot/scripts/overseer-digest.py > /home/claude-bot/kira-mail/digests/latest-run.log 2>&1
Log: /home/claude-bot/kira-mail/digests/latest-run.log
## Proposed improvements (Layer 6b + 6c)

_v1 stub. Not yet wired to parse Discord corrections for proposed rule additions. Karl can flag misses manually in the meantime; Kira logs them as candidate rules._

---
Generated: 2026-06-14 23:00 UTC by `/home/claude-bot/scripts/overseer-digest.py` (Layer 6 v1)
Sundays at 11pm UTC (9am AEST / 7am WITA)15 hours ago
Working
Morning brief
Posts the daily summary to Discord at 5am WITA.
Show technical detail
/home/claude-bot/scripts/morning-brief.sh
Log: /home/claude-bot/scripts/morning-brief.log
Two infra notes worth your attention: the **Discord plugin tool is down** (`No such tool available`), so I sent via the REST fallback. And **Zoom webinar scope** is still missing if you want launch registrations to ever show up.

One thing to confirm before I act on it, from the offline catch-up scan, a couple of channels have your message as the latest with no reply from me:
- **1496718278272221315:** "Get max to do the same assessment of the correct one now. Redo it and..."
- **1492464188369670345:** "Go and do your thing"

The rest are single-word thread headers (VIP Client Portal, BotNet, Make More $$) where the real work happens in the threads, so I've left those. Want me to pick up either of the two above?
Daily at 9pm UTC (7am AEST / 5am WITA)16 hours ago
Quiet
Weekly security scan
Checks for exposed env files, .git in webroots, unexpected open ports.
Show technical detail
/home/claude-bot/scripts/security-scan.sh >> /home/claude-bot/scripts/security-scan.log 2>&1
Sundays at 3am UTC (1pm AEST / 11am WITA)29 days ago
Working
Vault audit
Checks the OpenCore vault for stale or empty notes twice weekly.
Show technical detail
/home/claude-bot/scripts/vault-audit.sh >> /home/claude-bot/scripts/vault-audit.log 2>&1
Log: /home/claude-bot/scripts/vault-audit.log
**Auto-archived (0):**

**Moved to obsolete (0):**

**Archive candidates (2) — reply 'keep <name>' or 'archive <name>' in #systems:**
  · index.md (41 days old, no recent edits)
  · Learning-style-sales-pages-2026-04-19.md (35 days old, no recent edits)
Mondays + Thursdays at 8am UTC (6pm AEST / 4pm WITA)6 hours ago
Quiet
Kira email triage
Polls the inbox every minute, archives noise, queues judgment calls.
Show technical detail
/usr/bin/node /home/claude-bot/kira-mail/check-mail.mjs >> /home/claude-bot/kira-mail/logs/cron.log 2>&1
Log: /home/claude-bot/kira-mail/logs/cron.log
node[80858]: pthread_create: Resource temporarily unavailable
Aborted (core dumped)
Every minute16 days ago
Quiet
Agent reaper
Cleans up zombie agent processes every minute.
Show technical detail
/home/claude-bot/agents/reaper.sh
Log: /home/claude-bot/agents/reaper.log
2026-04-27T06:22:01+00:00 reaper: removed stale lock (age 95s)
2026-04-27T06:25:01+00:00 reaper: removed stale lock (age 84s)
2026-04-27T06:47:37+00:00 reaper: removed stale lock (age 300s)
Every minute49 days ago
Working
Agent health check
Verifies Kira and Max heartbeats every 15 minutes.
Show technical detail
/home/claude-bot/agents/health-check.sh
Log: /home/claude-bot/agents/health-check.log
2026-06-15T13:45:02+00:00 ALERT: systemd_down
2026-06-15T13:45:02+00:00 ALERT: inbox_stale_kira 13
2026-06-15T13:45:02+00:00 ALERT: inbox_stale_max 5
2026-06-15T13:45:02+00:00 OK
2026-06-15T14:00:01+00:00 ALERT: systemd_down
2026-06-15T14:00:01+00:00 ALERT: inbox_stale_kira 13
2026-06-15T14:00:02+00:00 ALERT: inbox_stale_max 5
2026-06-15T14:00:02+00:00 OK
Every 15 minutes4 minutes ago
Quiet
Overseer snapshot
Regenerates this dashboard every 5 minutes.
Show technical detail
/usr/bin/python3 /home/claude-bot/scripts/overseer-snapshot.py >> /home/claude-bot/scripts/overseer-snapshot.log 2>&1
Every 5 minutes32 days ago
Quiet
Overseer alerts
Posts a Discord alert when a service or cron breaks.
Show technical detail
/usr/bin/python3 /home/claude-bot/scripts/overseer-alert.py >> /home/claude-bot/scripts/overseer-alert.log 2>&1
Every 15 minutes32 days ago
Quiet
kira-bridge-watchdog.sh
Show technical detail
/home/claude-bot/agents/kira-bridge-watchdog.sh
Every minuteno log
Quiet
alert.py
Show technical detail
/home/claude-bot/agents/alert.py "DEADLINE: Fable 5 free window closes tomorrow (Jun 22 23:59 PDT). Flip coaching-question-check.ts off claude-fable-5 or it bills at \$10/M in + \$50/M out. Kira: read memory project_fable5_free_window.md and run the flip-back now."
Day 21 of each month at 9:47am UTC (7:47pm AEST / 5:47pm WITA)no log
Quiet
alert.py
Show technical detail
/home/claude-bot/agents/alert.py "KARL-APPROVED ONE-SHOT: Circle Eclipse keynote happened today (Jun 16). Kira: read memory project_club_fresh.md, research what Circle announced (circle.so/eclipse, blog, X coverage) re white-label branded apps + custom notification domains + pricing, re-run the Club FRESH buy-vs-build comparison, post the verdict to Discord channel 1496071185916625048 (no em dashes, Max-style), update the memory file."
Day 16 of each month at 9:07pm UTC (7:07am AEST / 5:07am WITA)no log

Always-on services

Background processes that should be running 24/7.
StatusServiceUptime
Running
Webhook receiver
Accepts inbound webhooks (Stripe, podcast, image uploads); 11 routes total.
Show technical detail
systemd unit: webhook-server.service
Started: Thu 2026-05-14 03:16:12 UTC
32d 10h
Stopped
Max (Hermes)
Tracy Harris Co's secondary agent. Codex-backed, handles visuals and image gen.
Show technical detail
systemd unit: hermes-gateway.service
Started: Sun 2026-05-24 04:07:15 UTC
-- No entries --
22d 9h
Running
Kira (Claude bot)
Primary agent. The one you talk to in Discord.
Show technical detail
systemd unit: claude-bot.service
Started: Sun 2026-05-17 00:21:59 UTC
29d 13h
Running
Mission Control
Internal ops dashboard at mission-control.tracyharris.co.
Show technical detail
systemd unit: mission-control.service
Started: Thu 2026-05-14 03:15:12 UTC
32d 10h
Running
Ops API
Backend for the Tracy admin dashboard. Serves brand-kit approvals and ops state.
Show technical detail
systemd unit: ops-api.service
Started: Wed 2026-04-15 13:20:48 UTC
61d 0h
Running
Obsidian sync
Bidirectional sync between OpenCore vault on disk and Obsidian.
Show technical detail
systemd unit: obsidian-sync.service
Started: Sun 2026-04-12 04:42:32 UTC
64d 9h
Running
Senja MCP server
Exposes Senja testimonials to Claude via MCP.
Show technical detail
systemd unit: senja-mcp.service
Started: Fri 2026-04-10 12:01:45 UTC
66d 2h
Running
Cloudflare tunnel
Routes traffic from Cloudflare to local services.
Show technical detail
systemd unit: cloudflared.service
Started: Mon 2026-05-11 05:37:44 UTC
35d 8h
Running
Nginx
Reverse proxy for webhook.tracyharris.com.au and the dashboards.
Show technical detail
systemd unit: nginx.service
Started: Wed 2026-06-10 06:26:56 UTC
5d 7h

Webhook endpoints

Inbound URLs the webhook server answers. Auth-protected routes return 401 to a probe, that's normal.
StatusEndpointResponse
Working
Health check
Returns 200 if the webhook server is alive.
Show technical detail
GET /health
Got 200 · expected 200
Tested 2026-06-15T14:05:01+00:00
200 (expected 200)
Working
Ops state read
Returns the current tasks and ideas backlog for the dashboard.
Show technical detail
GET /ops-state
Got 200 · expected 200
Tested 2026-06-15T14:05:01+00:00
200 (expected 200)
Working
Generic webhook receiver
Accepts authenticated webhooks from any source.
Show technical detail
POST /hook/test
Got 401 · expected 401
Tested 2026-06-15T14:05:01+00:00
401 (expected 401)
Working
Run a registered automation
Authenticated trigger for predefined automations.
Show technical detail
POST /run
Got 401 · expected 401
Tested 2026-06-15T14:05:01+00:00
401 (expected 401)
Working
Image upload (legacy)
Multipart photo upload via nginx (1MB limit, being phased out).
Show technical detail
POST /image-upload
Got 401 · expected 401
Tested 2026-06-15T14:05:01+00:00
401 (expected 401)
Working
Image tagger callback
Tags a photo already in R2 via the v2 schema tagger.
Show technical detail
POST /tag-by-slug
Got 401 · expected 401
Tested 2026-06-15T14:05:01+00:00
401 (expected 401)

Recent script activity

Last lines from each log file. Click to expand.
morning-brief.log (2026-06-14T21:13:59+00:00)
/home/claude-bot/scripts/morning-brief.log
- **Stripe MTD:** $30,655.67 AUD (FFM 13,416.67 / FFB 10,862 / SMS 2,922 / Other 3,455). I caught a categorisation bug first pass (the Founder Partial Scholarship doesn't contain "mastermind" so it fell into Other) and fixed it, FFM now reconciles to yesterday. AC active 14,090.
- **News:** led with the Anthropic Fable 5/Mythos 5 foreign-national ban (hits you directly as an Australian on Claude). Membership bucket came up dry after dedup, so I flagged that honestly rather than recycle a stale link, Circle Eclipse is tomorrow. Wildcard = SBSCH closes 30 Jun / Payday Super from 1 Jul (affects your payroll).

Two infra notes worth your attention: the **Discord plugin tool is down** (`No such tool available`), so I sent via the REST fallback. And **Zoom webinar scope** is still missing if you want launch registrations to ever show up.

One thing to confirm before I act on it, from the offline catch-up scan, a couple of channels have your message as the latest with no reply from me:
- **1496718278272221315:** "Get max to do the same assessment of the correct one now. Redo it and..."
- **1492464188369670345:** "Go and do your thing"

The rest are single-word thread headers (VIP Client Portal, BotNet, Make More $$) where the real work happens in the threads, so I've left those. Want me to pick up either of the two above?
senja-sync.log (2026-05-14T03:22:56+00:00)
/home/claude-bot/scripts/senja-sync.log
[Sun Apr 12 08:00:01 PM UTC 2026] Starting Senja sync
[Sun Apr 12 08:00:01 PM UTC 2026] Senja sync failed or returned 0 testimonials
[Sun Apr 19 08:00:01 PM UTC 2026] Starting Senja sync
[Sun Apr 19 08:00:02 PM UTC 2026] Senja sync failed or returned 0 testimonials
[Thu May 14 03:22:55 AM UTC 2026] Starting Senja sync
[Thu May 14 03:22:56 AM UTC 2026] Senja sync failed or returned 0 testimonials
vault-audit.log (2026-06-15T08:00:02+00:00)
/home/claude-bot/scripts/vault-audit.log
  · Brand-kit-backlog.md (keep)
  · Ref-pages-audit-2026-04-17.md (keep)

**Auto-archived (0):**

**Moved to obsolete (0):**

**Archive candidates (2) — reply 'keep <name>' or 'archive <name>' in #systems:**
  · index.md (41 days old, no recent edits)
  · Learning-style-sales-pages-2026-04-19.md (35 days old, no recent edits)
cron.log (2026-05-29T22:56:05+00:00)
/home/claude-bot/kira-mail/logs/cron.log
node[80858]: pthread_create: Resource temporarily unavailable
Aborted (core dumped)
actions.log (2026-06-15T14:04:43+00:00)
/home/claude-bot/kira-mail/logs/actions.log
2026-06-15T14:04:37.477Z queue-for-kira from=Tracy Harris <hello@mumswithhustle.com> subject="The Million Dollar Message™ Workshop · everything inside" path=/home/claude-bot/kira-mail/pending/3c323039323133303133392e33303336392e313738303831.json
2026-06-15T14:04:38.373Z queue-for-kira from=Tracy Harris <hello@mumswithhustle.com> subject="The Million Dollar Message™ Workshop · everything inside" path=/home/claude-bot/kira-mail/pending/3c313732313931353438362e33303337312e313738303831.json
2026-06-15T14:04:38.751Z queue-for-kira from=Tracy Harris <hello@mumswithhustle.com> subject="The 5 layers" path=/home/claude-bot/kira-mail/pending/3c313232373637353731352e3236313039362e3137383037.json
2026-06-15T14:04:39.559Z queue-for-kira from=Tracy Harris <hello@mumswithhustle.com> subject="The 5 layers" path=/home/claude-bot/kira-mail/pending/3c3837303134373635302e3236313039342e313738303738.json
2026-06-15T14:04:39.915Z queue-for-kira from=Tracy Harris <hello@mumswithhustle.com> subject="The 5 layers" path=/home/claude-bot/kira-mail/pending/3c3132313639313635322e3236313039322e313738303738.json
2026-06-15T14:04:40.773Z queue-for-kira from=Tracy Harris <hello@mumswithhustle.com> subject="The 5 layers" path=/home/claude-bot/kira-mail/pending/3c313630383033363231362e3236313037302e3137383037.json
2026-06-15T14:04:41.605Z queue-for-kira from=Tracy Harris <hello@mumswithhustle.com> subject="The photographer who didn't take photos" path=/home/claude-bot/kira-mail/pending/3c3132303733313633332e3230353035372e313738303730.json
2026-06-15T14:04:42.095Z queue-for-kira from=Tracy Harris <hello@mumswithhustle.com> subject="The photographer who didn't take photos" path=/home/claude-bot/kira-mail/pending/3c313037303334323430352e3230353036332e3137383037.json
2026-06-15T14:04:43.023Z queue-for-kira from=Tracy Harris <hello@mumswithhustle.com> subject="The photographer who didn't take photos" path=/home/claude-bot/kira-mail/pending/3c313739323331313439302e3230353036312e3137383037.json
2026-06-15T14:04:43.401Z queue-for-kira from=Tracy Harris <hello@mumswithhustle.com> subject="The photographer who didn't take photos" path=/home/claude-bot/kira-mail/pending/3c313436383735383536392e3230353035352e3137383037.json
errors.log (2026-05-21T05:27:01+00:00)
/home/claude-bot/kira-mail/logs/errors.log
2026-04-29T01:34:01.445Z fatal=GET /inboxes/kira.thc@agentmail.to/messages?labels=unread&limit=50 -> 503 {"message":"Service Unavailable"}
2026-04-29T01:35:01.825Z fatal=GET /inboxes/kira.thc@agentmail.to/messages?labels=unread&limit=50 -> 503 {"message":"Service Unavailable"}
2026-04-29T01:36:02.193Z fatal=GET /inboxes/kira.thc@agentmail.to/messages?labels=unread&limit=50 -> 503 {"message":"Service Unavailable"}
2026-05-05T12:10:12.319Z fatal=fetch failed
2026-05-05T12:11:12.005Z fatal=fetch failed
2026-05-21T05:25:03.755Z message=<TKyAgw47QJuRXDJbxTF9BA@geopod-ismtpd-45> err=ENOSPC: no space left on device, write
2026-05-21T05:26:02.354Z message=<20260520011921.181.484846026.swift@mumswithhustle97268.activehosted.com> err=ENOSPC: no space left on device, write
2026-05-21T05:26:02.859Z message=<20260519071924.179.2122338712.swift@mumswithhustle97268.activehosted.com> err=ENOSPC: no space left on device, write
2026-05-21T05:26:04.201Z message=<TKyAgw47QJuRXDJbxTF9BA@geopod-ismtpd-45> err=ENOSPC: no space left on device, write
2026-05-21T05:27:01.982Z message=<20260520011921.181.484846026.swift@mumswithhustle97268.activehosted.com> err=ENOSPC: no space left on device, write
health-check.log (2026-06-15T14:00:02+00:00)
/home/claude-bot/agents/health-check.log
2026-06-15T13:30:01+00:00 ALERT: inbox_stale_max 5
2026-06-15T13:30:01+00:00 OK
2026-06-15T13:45:02+00:00 ALERT: systemd_down
2026-06-15T13:45:02+00:00 ALERT: inbox_stale_kira 13
2026-06-15T13:45:02+00:00 ALERT: inbox_stale_max 5
2026-06-15T13:45:02+00:00 OK
2026-06-15T14:00:01+00:00 ALERT: systemd_down
2026-06-15T14:00:01+00:00 ALERT: inbox_stale_kira 13
2026-06-15T14:00:02+00:00 ALERT: inbox_stale_max 5
2026-06-15T14:00:02+00:00 OK
reaper.log (2026-04-27T06:47:37+00:00)
/home/claude-bot/agents/reaper.log
2026-04-27T06:22:01+00:00 reaper: removed stale lock (age 95s)
2026-04-27T06:25:01+00:00 reaper: removed stale lock (age 84s)
2026-04-27T06:47:37+00:00 reaper: removed stale lock (age 300s)
alerts.log (2026-06-13T21:15:01+00:00)
/home/claude-bot/agents/alerts.log
Dashboard: https://webhook.tracyharris.com.au/overseer.html
[2026-06-12T21:30:01.710039+00:00] sent (200): **Overseer status change**
- ALERT  cron error: /home/claude-bot/scripts/morning-brief.sh

Dashboard: https://webhook.tracyharris.com.au/overseer.html
[2026-06-13T21:15:01.828070+00:00] sent (200): **Overseer status change**
- OK  cron recovered: /home/claude-bot/scripts/morning-brief.sh

Dashboard: https://webhook.tracyharris.com.au/overseer.html

Paused or disabled

Scheduled jobs that have been switched off, with the reason.
JobPaused sinceReason
Vault nightly push
(PAUSED) Was auto-committing vault changes; conflicts with canon protection.
Show technical detail
(was 2026-04-21): 0 14 * * * /home/claude-bot/scripts/vault-nightly-push.sh
2026-05-14Blocked by canon-protect hook by design; re-enable would bypass canon review
Senja testimonial sync
(PAUSED) Pulls testimonials from Senja; API key needs rotation.
Show technical detail
(was 2026-04-21): 0 20 * * 0 /home/claude-bot/scripts/senja-sync.sh
2026-05-14Senja API key dead (401); needs new key in ~/.secrets/senja.env
Finance dashboard refresh
(PAUSED) Rebuilds the finance dashboard JSON; blocked on branch mismatch.
Show technical detail
(was 2026-04-21): 0 21 * * * /home/claude-bot/scripts/finance-snapshot-nightly.sh
2026-05-14Snapshot regen works, but git push fails (repo on sera-preview branch, not main)