Infrastructure Status
What's actually live
Last audited: 3 June 2026
1
Overview
| System | Status | Repo | What's running |
|---|---|---|---|
| Always-on infrastructure | |||
| NHH scheduler | Live | nearly-headless-hilda | 26 active cron jobs. Heartbeat + watchdog always on. Business-hours tasks every 15–30 min. |
| NHH Slack bot | Live | nearly-headless-hilda | 3 event handlers: app_mention, message, reaction_added. |
| Client portal | |||
| The Burrow | Live (core) | hedgehog-client-portal | 36 API routes, 18 Supabase migrations. Chat not yet wired to real backend. |
| Autopilots | |||
| HH Google Ads autopilot | Live | hh-google-ads-autopilot | 5 crons. Chain-based weekly pipeline Sun 8pm + daily anomaly scan. |
| HH Meta Ads autopilot | Live | hh-meta-ads-autopilot | 4 crons. run-all Sun 9pm + daily anomaly scan + objection expiry. |
| MM Google Ads autopilot | Live | mm-google-ads-autopilot | 11 crons. 8 per-client runs Sun 8pm staggered + digest/anomaly/monthly. |
| Routing | |||
| Slack interactions router | Live | hh-slack-interactions-router | 3 routes. Receives all autopilot Slack button clicks, routes to correct backend. |
2
NHH scheduler
Nearly Headless Hilda
teddi-coder/nearly-headless-hilda · Fly.io (hilda-scheduler + nearly-headless-hilda)
Autonomous marketing agent running as two Fly.io apps. The scheduler runs 26 cron jobs. The Slack bot handles mentions and messages. All external integrations (ClickUp, Google Drive, Gemini, Gmail, Supabase, MCP servers) are wired via environment variables.
Active cron jobs (26)
| Task | Schedule | What it does |
|---|---|---|
| Always on | ||
| heartbeat | Every 15 min | Health ping to confirm the app is running. |
| self-healing-watchdog | Every 15 min | Detects and restarts stuck tasks. |
| burrow-job-poller | Every 2 min | Checks Supabase for pending Burrow build jobs and processes them. |
| Business hours (weekdays, every 15–30 min) | ||
| clickup-runner | Every 30 min, 9am–5pm | Picks up tasks assigned to Hilda CoWork in ClickUp and runs them through the CEO pipeline. |
| proactive-scan | :05 and :35, 9am–5pm | AI-driven scan of all client ClickUp tasks. Flags overdue items, missing deliverables, and reply-overdue tasks. Posts to Slack. |
| client-comment-poll | Every 15 min, 8am–5pm | Polls ClickUp for new client comments needing action. |
| support-inbox | Every 15 min, 9am–5pm | Triages support emails with the hilda-wtf label. Routes to #hilda-triage. |
| guardrail-check | Every 30 min, 8am–6pm | Checks that client task guardrails are intact — no cross-client contamination. |
| client-task-monitor | Every 30 min, 9am–5pm | Monitors status changes on client tasks. |
| client-task-prep | :15 and :45, 9am–5pm | Pre-processes upcoming client tasks before they become due. |
| email-triage | Every 15 min, 9am–5pm | Triages the Hilda inbox. |
| Daily | ||
| meeting-outreach | 9am weekdays | Sends meeting prep outreach emails before client sessions. |
| promote-scheduled | 10am weekdays | Promotes scheduled Slack posts after the human review window closes. |
| meeting-prep | 8pm Sun–Thu | Builds meeting prep documents for tomorrow's client sessions. |
| gemini-notes | 1pm + 5pm weekdays | Scans Google Drive for new Gemini meeting transcripts. Extracts action items, creates ClickUp tasks, posts Slack summary. WIP meetings route to the correct HH or MM list by attendee. |
| heartbeat-post | 7am daily | Posts green tick to Slack confirming the scheduler is running. |
| update-hot-cache | 11:50pm daily | Pre-warms the hot cache for the following day. |
| memory-logger | Every hour | Logs memory stats. |
| Weekly | ||
| source-of-truth | Friday 12pm | Updates all client Source of Truth docs in ClickUp with latest notes and changes from the week. |
| failure-analysis | Monday 8am | AI-driven retrospective on the previous week's failures. Reads Slack error logs. |
| usage-report | Monday 8:30am | Posts API and resource usage stats. |
| extract-learnings | Monday 6am | Extracts learnings from the previous week's task completions. |
| lint-client-vault | Sunday 6am | Validates client data integrity in the vault. |
| client-data-sync | Sunday 11pm | Syncs client config to the database. |
| idempotency-prune | Monday 4am | Prunes stale idempotency records from Supabase. |
Slack bot — event handlers
app_mention
message
reaction_added
Commented out (12 tasks — exist in code but not scheduled)
- weekly-work-plan
- planning-reports
- teddi-day-ahead & teddi-week-ahead
- josh-day-ahead & josh-week-ahead
- daily-project-briefing
- monday-funday-prep
- friday-wrapup-prep
- weekly-campaign-flag
- weekly-client-report
- weekly-data-snapshot
Task files that exist but are never imported
- mid-month-checkin
- patch-source-of-truth
- post-meeting-email
3
The Burrow
Hedgehog Client Portal
teddi-coder/hedgehog-client-portal · Vercel + Supabase (hedgehog-master, Tokyo)
Client-facing portal. 36 API routes, 18 Supabase migrations deployed. Deliverable review, autopilot proposal approvals, AI advisor chat, account settings (briefing info, brand files, global rules), and admin tools. No cron jobs — purely event-driven.
Live API routes (36)
/api/deliverables
/api/deliverables/[id]/comments
/api/deliverables/[id]/items/[item]/decision
/api/deliverables/[id]/status
/api/deliverables/build
/api/deliverables/build-status
/api/chat/[slug]
/api/advisor
/api/advisor/history
/api/autopilot/approvals
/api/autopilot/resolve
/api/settings/briefing
/api/settings/brand-files
/api/settings/global-rules
/api/hilda/build
/api/hilda/chat
/api/hilda/status
/api/sot/approve
/api/sot/brand
/api/sot/client
/api/sot/clients
/api/admin/clients
/api/admin/conversations
/api/admin/documents
/api/admin/generate-onboarding-link
/api/admin/refresh-brief
/api/burrow/metrics/[slug]/snapshot
/api/client-documents
/api/creative-studio/save
/api/documents
/api/history/[slug]
/api/onboard
/api/tasks
Supabase tables (21 + 1 storage bucket)
advisor_conversations
approval_queue
autopilot_proposals
client_brand_files
client_brand_voice
client_briefings
client_documents
client_global_rules
client_personas
client_profiles
client_source_docs
clients
conversation_summaries
conversations
deliverable_comments
deliverable_item_decisions
deliverable_jobs
deliverables
messages
meta_approvals
onboarding_tokens
brand-files (storage)
Dead — fixture-backed demo pages (8 pages, not wired to live data)
- /preview/burrow/* — Klaylife demo with hardcoded fixture data
4
HH Google Ads autopilot
HH Google Ads Autopilot
teddi-coder/hh-google-ads-autopilot · Vercel + Supabase (fcwuqbexvggjvwgdpnya)
Weekly autonomous Google Ads management for HH clients. Chain-based architecture — clients run in sequence with a watchdog to unstick hung chains. Fetches MCP data, runs rules engine and AI analysis, posts Slack approval card, optionally executes changes.
Active crons (5)
| Route | Schedule | What |
|---|---|---|
| /api/run-chain | Sun 8pm | Main weekly pipeline — runs all HH clients in sequence. |
| /api/chain-watchdog | Sun 8–11pm every 5 min + Mon 12–2am | Detects and unsticks hung chains. |
| /api/digest | Sun 10pm | Posts Slack summary of the week's scan results. |
| /api/anomaly-check | Weekdays 9pm | Daily anomaly scan across all HH Google Ads accounts. |
| /api/monthly-report | 1st of month 8pm | Monthly performance summary. |
Supabase tables (11)
agent_prompt_guidance
approval_queue
audit_log
chain_state
clients
daily_snapshots
feedback_rules
intervention_log
proposal_surfaces
runs
semrush_cache
Dead code
- run-chain-b — second chain variant route exists but no cron triggers it
5
HH Meta Ads autopilot
HH Meta Ads Autopilot
teddi-coder/hh-meta-ads-autopilot · Vercel + Supabase (fcwuqbexvggjvwgdpnya)
Weekly autonomous Meta Ads management for HH clients. Fetches Meta campaign data via MCP, AI-proposes actions, delivers Slack approval cards, tracks interventions and objections.
Active crons (4)
| Route | Schedule | What |
|---|---|---|
| /api/run-all | Sun 9pm | Main weekly pipeline across all HH Meta clients. |
| /api/weekly-analysis | Sun 9:30pm | Cross-client analysis after the weekly run. |
| /api/anomaly-check | Weekdays 10pm | Daily anomaly scan across all HH Meta accounts. |
| /api/cron/expire-objections | Daily 6am | Cleans up expired entries in meta_client_action_objections. |
Supabase tables (14)
clients
meta_agent_prompt_guidance
meta_approvals
meta_audit_log
meta_client_action_objections
meta_clients
meta_creative_snapshots
meta_daily_snapshots_account
meta_daily_snapshots_campaign
meta_feedback_rules
meta_intervention_log
meta_landing_page_performance
meta_proposal_surfaces
meta_runs
Dead code
- admin/backfill-snapshots — one-off maintenance, not regularly triggered
- admin/sweep-orphan-cards — one-off maintenance, not regularly triggered
6
MM Google Ads autopilot
MM Google Ads Autopilot (Lightning McQueen)
teddi-coder/mm-google-ads-autopilot · Vercel + Supabase (texktztyyacsvdkgxbkr)
Same architecture as HH Google Ads autopilot but for Mechanic Marketing's 8 clients. Runs per-client rather than as a chain — each client gets its own Sunday cron, staggered 3 minutes apart.
Active crons (11)
| Route | Schedule | What |
|---|---|---|
| /api/run-client (×8) | Sun 8pm, staggered 3 min | Individual client runs: Auto Response → Ultra Tune North Ryde (and 6 others). |
| /api/digest | Sun 8:30pm | Slack digest after all client runs. |
| /api/anomaly-check | Weekdays 9pm | Daily anomaly scan across all MM Google Ads accounts. |
| /api/monthly-report | 1st of month 8pm | Monthly performance summary. |
Supabase tables (9)
agent_prompt_guidance
approval_queue
audit_log
clients
daily_snapshots
feedback_rules
intervention_log
runs
semrush_cache
Dead code
- run-chain + run-chain-b — routes exist but no cron calls them; all production runs use run-client
- clickup-backfill — one-off maintenance endpoint, not regularly triggered
7
Slack interactions router
HH Slack Interactions Router
teddi-coder/hh-slack-interactions-router · Vercel (no database)
A single Vercel function that acts as the unified Slack interactions callback URL. Receives button clicks and modal submits from all autopilot Slack messages and routes them to the correct backend. No database, no crons — pure routing layer.
Routes (3)
/api/slack/interactions
/api/internal/resolve-gads
/api/internal/resolve-meta
8
Dead & disabled
Everything below exists in the codebase but is not running. This is the canonical list — if a task isn't here and isn't in the active crons above, it doesn't exist.
| Task / feature | State | Repo | Why |
|---|---|---|---|
| NHH — commented out (import exists, no cron) | |||
| weekly-work-plan | Off | nearly-headless-hilda | Output too long and overwhelming. Not a NHH use case — complex analysis stays in Cowork. |
| planning-reports | Killed | nearly-headless-hilda | Disabled. Was generating malformed output. Reports done manually in Cowork. |
| teddi-day-ahead | Off | nearly-headless-hilda | Parked. Output not useful enough for daily use. |
| teddi-week-ahead | Off | nearly-headless-hilda | Parked. Same reason. |
| josh-day-ahead | Off | nearly-headless-hilda | Parked. Same reason. |
| josh-week-ahead | Off | nearly-headless-hilda | Parked. Same reason. |
| daily-project-briefing | Off | nearly-headless-hilda | Parked. |
| monday-funday-prep | Off | nearly-headless-hilda | Parked. |
| friday-wrapup-prep | Off | nearly-headless-hilda | Parked. |
| weekly-campaign-flag | Off | nearly-headless-hilda | Parked. |
| weekly-client-report | Off | nearly-headless-hilda | Parked. |
| weekly-data-snapshot | Off | nearly-headless-hilda | Parked. |
| NHH — task files never imported | |||
| mid-month-checkin | Unwired | nearly-headless-hilda | File exists but never imported or scheduled. |
| patch-source-of-truth | Unwired | nearly-headless-hilda | File exists but never imported or scheduled. |
| post-meeting-email | Unwired | nearly-headless-hilda | File exists but never imported or scheduled. |
| Burrow | |||
| /preview/burrow/* (8 pages) | Demo only | hedgehog-client-portal | Fixture-backed Klaylife demo. Not connected to live Supabase data. |
| Autopilots | |||
| run-chain-b | Unused | hh-google-ads-autopilot | Route exists, no cron triggers it. |
| admin/backfill-snapshots | Manual only | hh-meta-ads-autopilot | One-off maintenance endpoint. |
| admin/sweep-orphan-cards | Manual only | hh-meta-ads-autopilot | One-off maintenance endpoint. |
| run-chain + run-chain-b | Unused | mm-google-ads-autopilot | Routes exist but all production runs use run-client per client instead. |
| clickup-backfill | Manual only | mm-google-ads-autopilot | One-off maintenance endpoint. |