Your last line of defense
against production breakage
Talaia runs scheduled black-box smoke tests against your live apps โ real logins, real flows, real browsers โ and raises the alarm the moment a critical path breaks. Built for indie developers watching a fleet of small production apps.
Plain pytest ยท httpx + Playwright ยท SQLite ยท Docker ยท Pushover
How it works
Write a plain pytest suite
Drop a directory under projects/<project>/<suite>/ with a suite.yml and test_*.py files. API checks with httpx, real browser flows with Playwright โ no DSL, no framework lock-in.
Talaia runs it on schedule
Each suite.yml declares a cron schedule; supercronic executes the suites inside Docker, with in-run retries and a hard timeout. Every run lands in SQLite.
Get alerted when production breaks
up โ down sends one high-priority Pushover alert with the failing tests and first error lines. While down: cooldown. Back up: a recovery message. No alert spam.
Everything a watchtower needs
Uptime checks tell you a port answers. Talaia tells you your users can still log in, create things and pay.
Plain pytest suites
Suites are ordinary pytest directories โ httpx for API contracts, Playwright for browser flows. If you can write a test, you can monitor with it.
Cron scheduling
One cron line per suite, generated from each suite.yml and executed by supercronic in Docker. Per-suite retries, retry delay and timeout.
History in SQLite
Runs, per-test results and alert state in a single WAL-mode SQLite file โ the source of truth, surviving redeploys in one named volume.
Status page
A thin, UptimeRobot-style status UI (FastAPI + Jinja, no JS build) showing each suite's health and recent runs. Optional basic auth that fails closed.
Pushover alerts
Failures alert only after in-run retries are exhausted. Cooldown while a suite stays down, and an explicit recovery message when it's green again.
Dead-man heartbeats
Optional healthchecks.io ping per suite โ so you also find out when Talaia itself stops running, not just when your apps do.
Prometheus /metrics
Per-suite up/last-run/duration/run-count gauges and counters computed from SQLite on every scrape โ ready for your existing Prometheus + Grafana stack.
InfluxDB export
Optional mirror of every run and test result to InfluxDB v2 (line protocol, no client dependency) for Grafana dashboards.
Safe by rule, not by luck
These tests hit production on purpose โ so the golden rules are not optional.
- Dedicated test accounts only โ a suite never touches a real customer account.
- Everything a test creates is prefixed SMOKE- and cleaned up by the same test.
- Explicit safety gates before any write flow against production; irreversible flows live only in low-frequency, reviewed suites.
Living Specs
Describe a test in plain language โ as precise or as vague as you like. An LLM exercises your real app, discovers the selectors, and writes a deterministic Playwright test. When the UI drifts, the test heals itself. When the feature actually breaks, it never does.
๐ Sacred intents
A spec's "expect" clauses compile to intent() assertions that arenever auto-healed. Only the mechanics between them โ navigation, selectors, waits โ ever heal. An intent failure is a real regression and alerts at full priority.
๐งญ Three layers
A human-written spec.md is elaborated into a reviewedplan.md (the stable contract), which generates the deterministic test. Scheduled runs use no LLM at all โ fast, cheap, reliable.
๐ Review-gated
All generated and healed code lands as a candidate diff for your approval. Unreviewed code never runs on schedule and can never silently clear an alert.
Living Specs is in design โ read the full design in the docs.
Put a watchtower on your coast
Clone the repo, write your first suite, and know within minutes when production breaks.