Skip to content

Notifications

Event When
job.success, job.failed, job.cancelled A job ended
job.watchdog The watchdog stopped a job that ran far too long (reason, step, ranMs, limitMs)
bmc.unreachable A BMC stopped answering
disk.unhealthy A disk’s SMART status turned warning or failed
server.maintenance A server was put into maintenance or back in service

Add webhooks under Settings → Webhooks with a URL, the events (or all of them) and an optional secret. TrixOS sends a POST with a JSON body:

{
"event": "job.failed",
"at": "2026-11-08T20:14:27.000Z",
"data": { "...": "event details, for example the job and server" }
}

With a secret, the request carries X-TrixOS-Signature: sha256=<hex>, the HMAC-SHA256 of the raw body with your secret. Check it before you trust the request, for example in Node.js:

import { createHmac, timingSafeEqual } from 'node:crypto';
function verify(secret, rawBody, header) {
const expected = Buffer.from('sha256=' + createHmac('sha256', secret).update(rawBody).digest('hex'));
const got = Buffer.from(header ?? '');
return got.length === expected.length && timingSafeEqual(got, expected);
}

Deliveries time out after 10 seconds and are not retried. Webhook URLs must point to public addresses unless TRIXOS_ALLOW_PRIVATE_URLS=true is set, so a webhook can’t be used to reach services inside your network.

With SMTP_URL and NOTIFY_FROM set, the result of a job (job.success, job.failed, job.cancelled) is also mailed to the user who started it, when that user has an e-mail address.