// PLATFORM INBOX

EVERY ALERT.
ONE FEED.

The problem is not “we need more toasts.” The problem is Kronos outcomes, SRM pipeline events, Herald inserts, and SIGMA audit noise living in five apps. Notification Center is the unified alert inbox for meltuc.tech: it reads the shared herald_alerts bus that Herald owns. Any blueprint that calls emit_alert() (the live path after Telegram was retired platform-wide) shows up here tagged with source app, severity, title, message, and timestamp. Filter by source or severity, unread-only, acknowledge one row or bulk-clear the filtered view, export CSV. No extra env vars, no cron of its own, no third-party API. Proof: this landing is public; the feed is login-gated. If Herald has never initialised schema, this inbox has nothing to read — that dependency is honest, not a hidden 500.

Premier v1.0.0 herald_alerts No cron
Launch App How it works
1
Table: herald_alerts
CSV
Export results
Bulk
Clear filtered
0
Own cron jobs
// HOW IT WORKS

From emit_alert() to an acknowledged row

Notification Center does not invent a second bus. Herald writes; this app reads, filters, and lets an operator mark things seen. Telegram is not the live channel — send_telegram_alert is a no-op without tokens. New failure paths should emit_herald_alert, then they appear here.

01
Something fails or finishes
A blueprint calls Herald emit_alert() / emit_herald_alert and inserts herald_alerts with source, severity, title, message, timestamp.
02
Open the inbox
/notifcenter/app is the paginated feed. Public /notifcenter/ never lists live alerts for a stranger.
03
Filter the noise
Source app, severity, unread-only. You are not paging through every blueprint dashboard.
04
Acknowledge
Single-row ack or bulk-clear of the current filtered view so yesterday’s Kronos noise is not today’s unread count.
05
Export if you must
CSV of the current result set. No extra warehouse. No rewrite of Herald’s schema.
Open the inbox
// FEED

One chronological list, tagged by source

CSS mock of the aggregated feed — not a screenshot of Slack, PagerDuty, or another product. Rows are Herald-shaped: source, severity, title.

meltuc.tech/notifcenter/app — CSS mock, not a product screenshot
kronos · job failedcritical
srm · pipeline eventinfo
sigma · auditwarning
herald · insertinfo
// FILTERS

Unread, by app, by severity

Filter chrome is the point of this app. Without it you still have five dashboards.

meltuc.tech/notifcenter/app?unread=1 — CSS mock, not a product screenshot
SourceAll apps
Severitycritical / warning / info
Unread onlyon
Page1
// EXPORT

CSV of exactly what you filtered

Export is the current result set, not a secret full-table dump dressed as a button.

meltuc.tech/notifcenter/app · CSV — CSS mock, not a product screenshot
Columnssource, severity, title, ts
Acksingle or bulk
Bus ownerHerald schema
// PUBLIC VS APP

Storefront here. Alerts behind login.

GET /notifcenter/ is public. The feed requires login. Health stays public and must not be a second query of herald_alerts for fun.

// DEPENDENCY

Herald must exist first

Herald creates and owns herald_alerts. Notification Center is a reader. If Herald never ran schema init, this inbox is empty by design.

// WHAT IT REFUSES

No second Telegram. No private bus.

This app will not re-enable Telegram as the live channel. It will not create notifcenter_* tables that duplicate Herald. It will not scrape each blueprint’s UI. If an app still calls send_telegram_alert with tokens unset, those events never arrive — fix the emitter to herald, do not fake rows here.

// WHO THIS IS FOR

Operators who refuse to open twelve dashboards

Platform admins and power users watching Kronos, SRM, SIGMA, and Herald in one chronological list. If you need a paging product with on-call rotations, this is the wrong inbox. If you need “what fired since lunch?”, this is the feed. How you verify: emit a herald alert from a known blueprint, see it tagged, filter unread, ack, export CSV, confirm Telegram was not required.

// FEATURES

One bus. One inbox.

Every card is something the README actually ships. No invented on-call calendar.

🔔
Herald bus
Reads herald_alerts only. emit_alert() from any blueprint is the write path.
🔎
Filters
Source app, severity, unread-only, pagination.
✅
Acknowledge
Single row or bulk-clear of the filtered view.
📄
CSV export
Current result set, not a hidden warehouse.
🏷️
Source tags
Kronos, SRM, SIGMA, Herald — named, not a blob.
🚫
No own cron
No Notification Center job. Producers emit; this app displays.
🔐
SWIP gate
Public landing; feed behind Flask-Login.
📡
Platform-only
No third-party notification SaaS.
🧹
Not a second Herald
No duplicate schema. Empty if Herald never initialised.
// GET STARTED

Open the inbox. Ack what fired.

Login for the feed. This page stays public and does not leak alert bodies.

Launch Notification Center

Requires a MelTuc account. Create one free.

// SAID SLOWLY

What stays true over time

Unified platform notification aggregation — consolidates alerts and events from all blueprints. Health stays cheap. If this page disagrees with the signed-in app, trust the app — the product contract and tests enforce that rule.