// ALERT BUS

THE BUS OTHER APPS WRITE.

The problem is not “another inbox clone.” The problem is Kronos failures, SRM events, and SIGMA noise with nowhere canonical to land. Herald owns herald_alerts. Blueprints call shared.herald.emit_alert() (fire-and-forget, no fingerprint, no raise). HTTP ingest POST /herald/api/emit is localhost-only, 100/min, MD5 fingerprint source_app:title, upsert on conflict. Operators filter severity and source, search JSONB metadata, ack, mute, bulk-delete, see noisiest apps over 7 days. A Telegram digest of unacked alerts exists in the product — platform tokens are retired so that digest is a no-op unless you restore them. Notification Center is a reader of this table, not a second bus. New failure paths should emit here, not Telegram.

Premier Owns herald_alerts Localhost emit Telegram optional
Open Herald How it works
2
Ingest paths
100/m
HTTP emit
7d
Noisiest apps
NC
Reader, not owner
// HOW IT WORKS

Five steps from emit_alert to an acked row

In-process emit does not dedupe. HTTP emit does. Know which path your blueprint uses.

01
An app emits
emit_alert(source_app, title, level, message, metadata). Never raises.
02
Or localhost HTTP
POST /herald/api/emit from 127.0.0.1. 403 otherwise. Fingerprint upsert.
03
Open the hub
/herald/app after login. Public landing lists no alert bodies.
04
Filter / search
critical/error/warning/info, source app, JSONB, developer tie-ins.
05
Ack, mute, delete
Single or bulk. Mute expected noise. Digest button may no-op without Telegram tokens.
Open Herald
// INBOX

One table, many sources — CSS mock

Not PagerDuty. Not Notification Center’s UI copied as a screenshot.

meltuc.tech/herald/app — CSS mock, not a product screenshot
kronoserror
srminfo
sigmawarning
// INGEST

Helper vs localhost POST

Helper: no fingerprint. HTTP: md5 upsert. Do not expose emit to the internet.

127.0.0.1/herald/api/emit — CSS mock, not a product screenshot
Authloopback
Rate100/min
Dedupefingerprint
// vs NC

Herald writes. Notification Center reads.

If both landings sound identical, this sentence is the difference.

meltuc.tech/herald/ vs /notifcenter/ — CSS mock, not a product screenshot
OwnerHerald schema
ReaderNotification Center
Telegramretired tokens
// PLATFORM RULE

emit_herald_alert, not Telegram

send_telegram_alert is a no-op without tokens. Wire new alerts here.

// WHAT IT REFUSES

No public emit. No second table for NC.

Will not 200 emit from the WAN. Will not store alert bodies on /herald/.

// WHO THIS IS FOR

Operators who need one pane of glass

Engineers watching the factory. If you only wanted a pretty changelog, that is ShipLog.

// FEATURES

Ingest, filter, ack

No invented on-call rotations.

✍️
emit_alert()
In-process, never raises.
🔒
HTTP emit
Localhost, fingerprint upsert.
🔎
Filters
Level, source, JSONB.
✅
Ack
Single and bulk.
🔇
Mute
Expected noise.
🗑
Bulk delete
Operator cleanup.
📈
Noisiest 7d
Which blueprint screams.
📱
Digest
Telegram if tokens exist.
📖
NC sibling
Inbox UI over the same bus.
// GET STARTED

Open the hub that owns the table.

Login for /herald/app. This page is not the feed.

Open Herald

Requires a MelTuc account. Create one free.

// SAID SLOWLY

What stays true over time

Unified Alert Hub — central dashboard for platform alerts, errors, and Telegram notices. Health stays cheap. If this page disagrees with the signed-in app, trust the app — the product contract and tests enforce that rule.