Pipeline alerts by text and phone call

A failed pipeline at 3 AM should reach a human. Here is how the pack agent does it from your own server, with your own Twilio number and no per-message fee from us.

What it does

  • A failed GitHub Actions run or GitLab pipeline posts to Slack or Teams and texts your on-call phone.
  • A failed deploy or a PagerDuty incident also places a phone call that starts with “This is an automated call.” and then plays the alert in the pack's voice.
  • Passed builds, releases and review requests go to chat only.

Set it up

sh sv-agent init --pack .          # pick a devops pack (IT help desk, hosting, apps)
sh sv-agent source add github      # or: gitlab, pagerduty
export GITHUB_WEBHOOK_SECRET=choose-a-long-random-string
# agent.json:  "facts": {"oncall_phone": "+15551234567"}
sh sv-agent check && sh sv-agent run         # dry-run first

In GitHub, open the repository Settings, then Webhooks, and add https://YOUR-AGENT/hook/github, content type JSON, your secret, and the events Workflow runs, Pull requests, Releases and Dependabot alerts. In GitLab use Settings, Webhooks, the same address with /hook/gitlab, the secret token, and Pipeline events. Requests that fail the signature or token check are refused.

Why it can wake you up

Your on-call number is yours, so alerts to it are marked urgent: they skip quiet hours and the per-person daily limit. Opt-outs and the kill switch always apply, and everything starts in dry-run.

Honest limits

  • It runs on a server you control and needs a public address for GitHub, GitLab and Twilio to reach it.
  • It reads GitHub and GitLab event fields, so keep stack traces and secrets out of messages; the default texts carry only the repository, branch and link.
  • Tested against simulated services: try it in dry-run with your own accounts first.

Keep reading