Real-time uptime monitoring for MCP servers. Register a server, FleetWatch pings it on a schedule, and tells you the moment it goes down, gets slow, or comes back.
None of the other tools in this portfolio do this: mcp-schema-watch catches breaking schema changes, contextpulse watches context/token health, skillcheck lints SKILL.md files, Swarm Trace Viewer debugs finished runs, PR Blast Radius flags risky pull requests. FleetWatch answers the one question none of them do: is the server actually up, right now.
- Register an MCP server's URL.
- A BullMQ repeatable job pings it every
HEALTH_CHECK_INTERVAL_MS(default 60s) with atools/listJSON-RPC call. - Response time and success/failure are recorded. Status becomes
up,degraded(slow), ordown. - On any status change, an alert is written and pushed live over WebSocket.
NotificationServicecurrently logs alerts — wire in Slack/email there when ready. - The dashboard shows live status per server with no page refresh.
Verified end to end: register → immediate check → status flips to down on an unreachable URL → alert recorded with the failure reason.
brew services start postgresql
brew services start redis
psql postgres -c "CREATE USER fleetwatch WITH PASSWORD 'fleetwatch';"
psql postgres -c "CREATE DATABASE fleetwatch OWNER fleetwatch;"
cd api
cp .env.example .env
npm install
npm run start:dev # http://localhost:3010
cd ../web
cp .env.local.example .env.local
npm install
npm run dev # http://localhost:3000Prefer containers instead? docker-compose up -d from the repo root starts Postgres + Redis with the same credentials, skip the brew services / psql lines above.
- Notifications log to console instead of Slack/email —
api/src/alerts/notification.service.ts. - No auth yet — fine for local/personal use, add before deploying anywhere public.
synchronize: trueon TypeORM creates tables automatically for local dev. Swap for real migrations before production.
NestJS, TypeORM, BullMQ, Postgres, Redis, Socket.IO — Next.js, Tailwind.