Skip to content

Overview

StackVitals is a lightweight, self-hosted operations dashboard for a solo developer’s web projects. It surfaces uptime, deploy health, provider status, domain health, month-to-date cloud cost, and AI/CI usage — without copying raw application data out of the apps it watches.

  1. Collectors — Node scripts that call external provider APIs (AWS, Supabase, OpenAI, GitHub, Cloudflare, Resend) and write append-only snapshots to your Supabase database. They run on a schedule from GitHub Actions, never in the browser.
  2. Dashboard — A static React/Vite frontend that reads pre-aggregated rows from Supabase and renders them across tabbed views.

Both live in the same repo. There are no always-on servers.

Every adapter is opt-in — it activates only when its credentials are present. Turn on exactly the ones you use:

AdapterCollects
HTTP healthPublic URL up/down, response time
AmplifyDeploy status, branch, latest build
AWS Cost ExplorerAccount-level month-to-date / last-month cost per AWS service
Supabase project healthReachability of the hub’s own project or a watched app’s
Watched-app Supabase aggregateCount-only aggregate stats from a custom RPC
ResendSending-domain verification status
OpenAI usageToken totals, request counts, cached tokens, spend by key/model
GitHub ActionsWorkflow run counts, latest status, trigger type, duration
Cloudflare domainsZone status, DNS record counts, registrar expiry

See the full adapter reference for credentials and permissions.

This isn’t multi-tenant. It’s built to be one dashboard for one person’s projects. Access is gated twice: the frontend checks the signed-in email against an allowlist, and Supabase RLS independently restricts reads to authenticated emails in dashboard_users.

Only aggregate operational signals are collected — status, counts, durations, costs. Raw user data, request payloads, message bodies, and table dumps from watched apps never enter this tool. Each watched app’s credentials are used only to call count-only RPCs in that app’s own project.

Ready to set up your own instance? Follow the self-hosting guide.