Production monitoring for solo founders. $0/month. No excuses.
CTO Cockpit — traffic-light semaphores, incident log, morning sync |
System Dashboard — live metadata from Supabase via n8n |
A complete CTO-grade operations dashboard and automation pipeline that runs entirely on free tiers. Built by a solo founder who got tired of paying for monitoring tools that did less than what she could build in a weekend.
Monitors n8n workflows, Slack channels, GitHub repos, Cloudflare, LinkedIn, and Meta — with traffic-light semaphores, incident tracking, and a 60-second morning sync. Ingests content automatically via webhook, classifies it with Claude AI, cross-links related entries, and builds a searchable metadata layer in Supabase. Ships as a PWA you can pin to your phone and open at 7am to know exactly what’s broken (and what isn’t).
This is the real system. Not a demo. Open-sourced so other solo founders don’t have to build it from scratch.
┌─────────────────────────────────────────────────────────────────┐
│ DATA SOURCES │
│ Slack GitHub Cloudflare LinkedIn Meta Webhooks │
└────────────────────────────┬────────────────────────────────────┘
│ HTTP POST to webhook
▼
┌─────────────────────────────────────────────────────────────────┐
│ n8n (Render free tier) │
│ │
│ WF-01: Ingest → Claude classify → Supabase insert → trigger │
│ WF-04: Timeline → temporal cluster → narrative arc → update │
└────────────────────────────┬────────────────────────────────────┘
│ REST API (anon key)
▼
┌─────────────────────────────────────────────────────────────────┐
│ Supabase (free tier) │
│ │
│ PostgreSQL 15 · RLS · Real-time · 5 tables · GIN indexes │
└────────────────────────────┬────────────────────────────────────┘
│ fetch() from browser
▼
┌─────────────────────────────────────────────────────────────────┐
│ GitHub Pages (free, custom domain) │
│ │
│ dashboard/cto-cockpit.html → Your phone (PWA) │
│ dashboard/system-dashboard.html → Status overview │
└─────────────────────────────────────────────────────────────────┘
| Service | What it does | Free tier limit | Cost |
|---|---|---|---|
| n8n on Render | Automation workflows, webhook ingestion, Claude AI calls | 750 hours/month (always on with keep-alive) | $0 |
| Supabase | PostgreSQL database, auth, real-time, RLS | 500MB storage, 50K API calls/month | $0 |
| GitHub Pages | Static dashboard hosting, custom domain, HTTPS | 100GB bandwidth/month, unlimited sites | $0 |
| Cloudflare | DNS, DDoS protection, analytics | Unlimited DNS, 100K requests/day | $0 |
| UptimeRobot | External uptime monitoring, 5-min checks | 50 monitors | $0 |
| Claude API | Content classification (optional) | Pay-as-you-go, ~$0.01/classification | $0* |
Total: $0/month (Claude API optional — disable the classify step to stay fully free)
You’ll have a working dashboard in under 30 minutes.
# Fork on GitHub, then:
git clone https://github.com/YOUR_USERNAME/zero-cost-ops.git
cd zero-cost-ops
schema/supabase-schema.sqln8nio/n8n:latestN8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=your-secure-password
SUPABASE_URL=https://YOUR-PROJECT.supabase.co
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
https://your-n8n.onrender.comworkflows/WF-01-ingestion-pipeline.jsonworkflows/WF-04-timeline-engine.jsonEdit dashboard/system-dashboard.html — find the API constant and update:
const API = 'https://YOUR-N8N-INSTANCE.onrender.com/webhook/system';
Edit dashboard/cto-cockpit.html — update the CONFIG object with your services.
Render free instances sleep after 15 minutes of inactivity. Add a UptimeRobot monitor to ping your n8n health endpoint every 5 minutes:
https://YOUR-N8N-INSTANCE.onrender.com/healthz
That’s it. Your CTO cockpit is live.
What it does: Receives content via webhook → filters noise → classifies with Claude AI → stores in Supabase → triggers cross-linking.
Webhook → Extract Content → Filter → Claude Classify → Parse → Supabase Insert → Trigger WF-02 → Respond
Inputs: Any POST to /webhook/wf01-ingest with { text, source, user_id }
Output: Classified entry in Supabase metadata table with tags, entities, narrative role, and timeline group
Claude model: claude-sonnet-4-20250514
What it does: Scans all entries in Supabase → clusters by time period → detects narrative arc patterns → updates timeline_group field in bulk.
Webhook → Fetch All → Temporal Clustering → Narrative Arc Detection → Batch Update → Summary
Run: Trigger manually or on a schedule (weekly recommended)
Output: All entries tagged with 1974-1990 | 2019-2023 | 2024-2026 + narrative role analysis
See workflows/README.md for detailed documentation.
This system is designed to be adapted, not just deployed. You can:
CONFIG object in cto-cockpit.htmlmetadata or create new tablesSee docs/CUSTOMIZATION.md for a full guide.
Issues, PRs, and feedback welcome. See CONTRIBUTING.md.
Ana Ballesteros Benavent
CTO, NEYEN / The Spiral Within SLU
Valencia, Spain
thespiralwithin.ai · GitHub: ProyectoAna
Built this because I needed it. Sharing it because you might too.
MIT — see LICENSE. Use it, fork it, ship it.