The blueprint, how the recovery runtime runs
Two processes. One datastore.
No Redis, no broker, no accidental complexity.
The full rationale ships in ARCHITECTURE.md, readable before you buy.
Tier 01 / Clients
- Team browser
- Public visitors
Tier 02 / Two processes
-
Web
NEXT.JS 16: server actions + RBAC guards; dashboards · status pages (ISR); Anthropic API, optional. -
Worker
NODE 20.9+: cron tick, every minute; fan-out · dedup · adaptive scheduling; forty-two check types against your endpoints; a 500 ms plane beside it for the ones that need it; signed recovery triggers, verified; then runbooks, tasks and objectives on queues of their own.
Tier 03 / One datastore
PostgreSQL 18
DRIZZLE ORM · PG-BOSS
Application data + job queue in one database, no Redis, no message broker, one thing to back up.
First boot
One command. Ten minutes.
The compose file boots Postgres, runs migrations, starts the worker and serves the app. Bare-metal works too. Node 20.9+, two processes, one database.
$ git clone git@vigil/vigil.git && cd vigil
$ docker compose up
✓ postgres ready. :5432
✓ migrate schema up to date
✓ worker cron tick, queue live
✓ web ready, http://localhost:3000
vigil is awake. watching begins now_
Illustrative output, the documented compose flow
The data model
Everything hangs off the organization.
Tenancy is structural, not bolted on. Every table is scoped to an org, and isolation is covered by tests.
organization
├── HAS → member
├── OWNS → monitors
│ └── PRODUCES → monitor_checks
├── RECOVERS VIA → recovery_actions
│ └── RECORDS → recovery_attempts
├── OWNS → incidents
│ └── TIMELINE → incident_events
└── HAS → status_pages
└── SHOWS → status_page_monitors
Monitors open incidents on repeated failure, recovery fires, verifies, and every attempt stays on the books.
The math
You already know what these weeks cost.
Conservative estimates for one senior engineer building the same subsystems to the same standard, typed, tested, documented, hardened.
| Subsystem | What it actually involves | Time |
|---|---|---|
| Auth + RBAC | Sessions, orgs, invitations, role matrix, guard chain, tenancy isolation tests | 3 wks |
| Monitoring engine | Queue, scheduling fairness, dedup, drift, SSRF guards, state caching | 3 wks |
| Incident system | State machine, timelines, auto open/resolve, notifications | 2 wks |
| Status pages | Public read models, uptime aggregation, cache strategy, leak review | 1.5 wks |
| AI features | Prompting, guardrails, rate limits, graceful degradation | 1 wk |
| Tests, CI, Docker | 4706 tests, pipelines, images, architecture docs, seed tooling | 3 wks |
| Total | at $8-12k / month fully-loaded senior cost | ≈ 13-14 wks |