Skip to content

Matrix

What it gives you โ€” findings delivered to any Matrix room, with an optional zero-ingress ๐Ÿ‘/๐Ÿ‘Ž feedback loop over reactions.

Minimal config

notify:
  matrix:
    homeserver: https://matrix.org
    room_id: "!yourroom:matrix.org"
    access_token_env: MATRIX_TOKEN

Verify it locally

kubectl -n runlore create secret generic runlore-secrets \
  --from-literal=MATRIX_TOKEN='<matrix-access-token>'

Fire a test incident (see Alertmanager or hack/demo.sh) and confirm delivery:

kubectl -n runlore logs deploy/runlore | grep 'msg=findings'

Notes

  • Matrix delivers the same content as Slack’s incoming-webhook path: a single message per finding (no threading).
  • matrix.feedback_reactions (opt-in, default false) โ€” react ๐Ÿ‘/๐Ÿ‘Ž to a RunLore message and the rating lands in the outcome ledger, with the same per-user dedup and trust weighting as Slack’s feedback buttons.
  • Nothing is exposed to enable it โ€” reactions arrive over the client-server /sync long-poll, an outbound HTTPS request authenticated by the notifier’s own access token. This is the zero-ingress alternative to Slack’s Interactivity Request URL.
  • The listener runs on the leader only, skips reactions from before startup, ignores every emoji except ๐Ÿ‘/๐Ÿ‘Ž, and only counts votes on messages the bot itself sent (attribution is anchored on /whoami).
  • Startup fails loud unless homeserver/room_id/access_token_env and outcome.ledger_path are set.
  • Use an invite-only room โ€” any room member can vote.

Reference