alerts without app stores

Alerts from your systems, everywhere at once

An agent, a script or a device posts an event with a token in one HTTP request; every registered device receives it in real time, and peer servers forward events between nodes.

HTTPWebSocketAndroidbrowser
channel alerts · delivery5 recipients
laptop-annabrowser · deliveredpixel-annaAndroid · deliveredtablet-opsbrowser · deliveredphone-dutyAndroid · offline, queuednode-2peer server · forwarded
severity: warnevent_key≤ 16 KB600 requests/min
01 / sending

A token and one request

an event from a script · curl
# an event from cron, an agent or a device
curl -X POST "https://unmessagelite.qublo.org/api/v1/send?channel=alerts" \
  -H "Authorization: Bearer $AGENT_TOKEN" \
  -H "Content-Type: text/plain" \
  --data "Disk is 92% full"

# the same with a severity and a title
curl -X POST https://unmessagelite.qublo.org/api/v1/events \
  -H "Authorization: Bearer $AGENT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"channel":"alerts","severity":"warn","title":"Disk","body":"92%"}'
No SDK, no buildNo libraries and no app stores: plain HTTP from cron, a script or a device.
Plain and rich form`/api/v1/send` takes plain text; `/api/v1/events` takes a severity, a title and an idempotency key.
02 / devices

Who received the event

01Real timeA device holds a WebSocket and gets the event at once; sending always goes over REST.
02Browser and AndroidOne event reaches every device the user has registered.
03A queue for offlineA device that is away receives the event on its next connection.
04No duplicatesRe-sending with the same event key does not create a second event.
03 / peers

Exchange between nodes

01Nodes get to know each otherEach node publishes its public key and the neighbour stores it.
02Events are forwardedA node passes the event to its peers in a signed federation request.
03Delivery is not lostIf a node was unreachable, what it missed is caught up from the peer's backlog.
04 / questions

In short

What does the sender need?

A token and the ability to make an HTTP request: cron, a script, an agent or a device. No libraries, no build.

How do devices subscribe?

A device registers once, then holds a WebSocket and receives the channel's events immediately; that channel cannot send — it is receive-only.

What are peer servers for?

They forward events between nodes, so a message arrives even when the recipient is attached to a neighbouring node.

How is it different from TechnoVeche?

It is the small edition: one binary and the fewest parts for a modest installation.

Alerts and nothing else

A token, one HTTP request — and the event is on every device.