Integrations
Two ways in. Paste a URL into anything that can send an HTTP request, or install a connector that already knows a service's payload shape. Both end the same way: a line in your room.
1 ยท The alert URL โ works with everything, today
Create one in the app (๐, or type /alert in a room). It is a secret URL: treat it like
a password. Anything that can make an HTTP request can post to it, and Orb reads the payload shapes
the common tools already send, so there is usually nothing to configure on either side.
curl "https://orbsnetwork.com/api/alert/<token>?text=deploy%20finished"
curl -X POST https://orbsnetwork.com/api/alert/<token> \
-H 'content-type: application/json' -d '{"text":"disk 91% on db-1"}'
Ten posts a minute per URL, 2000 characters a line. Add ?level=critical to colour it.
The full contract is in llms.txt โ written so a language model can read it and
use it without any further explanation.
2 ยท Connectors โ a folder per service
A connector knows one service's payload shape and its signature scheme, so its lines read like a person wrote them rather than like a JSON dump. An admin installs one per network and gets a URL to paste into that service. Adding a connector to Orb is adding a folder โ never an edit to the core.
Write your own
The whole surface is onWebhook(ctx, req) and ctx.post(text, level).
ctx.http is the only way out and it is the same guarded fetch the rest of Orb uses;
ctx.verify carries the signature helpers. See connectors/README.md in the
repository โ it is short on purpose, so a model can scaffold a connector from one sentence.