v0.8.0
Released 2026-03-15
Public status pages
Share a read-only status view with clients without giving them a login.
- Generate a status token from Settings — creates a short-lived shareable URL
- The public page at
/status/?token=<token>shows overall health, component grid, and active incident timeline - Token-gated: revoke a token at any time to invalidate the shared link
- Cloudflare Turnstile challenge on the contact form prevents spam submissions
Vendor monitoring
Merlonix now watches 11 upstream infrastructure vendors and fans alerts out to tenants whose stack tags overlap with the affected services.
Covered vendors: Stripe, Cloudflare, Anthropic, OpenAI, Vercel, GitHub, Slack, Shopify, Google Cloud, AWS, Azure
- Polls every 5 minutes via each vendor's status API
- Content-hashes each response — only re-processes on genuine changes
- LLM summarises the incident and assigns an impact level (
none,minor,major,critical) - AWS and Azure RSS feeds are parsed in addition to the Statuspage JSON APIs
Alert channels
Route alert notifications to the destination your team actually monitors.
Supported channel types:
| Type | How it works |
|---|---|
email | HTML alert email via Resend |
slack_webhook | Slack Incoming Webhook JSON POST |
generic_webhook | HTTPS POST signed with X-Merlonix-Signature: sha256=<hex> |
Each channel has a severity filter — configure it so only critical alerts page your on-call rotation while info alerts go to a low-priority email digest.
DLQ observability
When a check-runner job fails after all retries, it is now routed to a dead-letter queue consumer that:
- Writes a row to
agent_run_failures - Fires a
criticaloperator alert on first failure per asset per day - Deduplicates on
dlq:<type>:<asset_id>:<YYYY-MM-DD>so repeat failures don't flood the operator inbox
Other improvements
- Keyset cursor pagination on
/v1/assetsand/v1/checks— O(log n) at scale instead of O(n) offset scans - Audit log at
/v1/audit-log— immutable record of all mutations (asset CRUD, alert acks, billing changes, channel changes) - Billing pause/resume — self-serve
POST /v1/billing/pauseand/v1/billing/resumevia Stripe'spause_collectionAPI