CI & automation
GitHub Actions, cron, and anything that emits webhooks.
GitHub Actions
Create a project API key in the dashboard and store it as a repository (or
org) secret — e.g. STDPUSH_API_KEY. Auth is that key as a Bearer token;
no OAuth or CLI login in CI.
Official action
Add a step under an existing job’s steps: — not as the entire workflow
file. Source: stdpush/notify.
Minimal full workflow (.github/workflows/notify.yml) — use this if
you’re starting from scratch or testing the action:
name: Notify
on:
workflow_dispatch: # Actions tab → Run workflow
jobs:
notify:
runs-on: ubuntu-latest
steps:
- name: Send test notification
uses: stdpush/notify@v1
with:
api-key: ${{ secrets.STDPUSH_API_KEY }}
title: "stdpush action smoke test"
message: "${{ github.repository }} @ ${{ github.sha }}"
priority: normalStep only — paste inside a job that already has other steps:
- name: Alert on broken build
if: failure()
uses: stdpush/notify@v1
with:
api-key: ${{ secrets.STDPUSH_API_KEY }}
title: "Build failed on ${{ github.ref_name }}"
message: "${{ github.repository }} — ${{ github.workflow }}"
priority: high- name: Notify deploy
uses: stdpush/notify@v1
with:
api-key: ${{ secrets.STDPUSH_API_KEY }}
title: "Deploy finished"
message: "${{ github.sha }}"
priority: normal
click-url: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}Inputs also include topic and idempotency-key.
curl (no action)
- name: Alert on broken build
if: failure()
run: |
curl -sS https://api.stdpush.com/v1/notify \
-H "Authorization: Bearer ${{ secrets.STDPUSH_API_KEY }}" \
-H "Content-Type: application/json" \
-d '{"title": "Build failed on ${{ github.ref_name }}", "priority": "high"}'Cron
0 3 * * * /opt/backup.sh || stdpush -p high "Nightly backup failed"(Cron jobs don't source your shell profile, so use the installed stdpush
binary or a raw curl — not a .bashrc helper function.)
Docker healthchecks and scripts
docker events --filter event=die --format '{{.Actor.Attributes.name}}' |
while read name; do
stdpush -p high "Container died: $name"
doneAnything with a webhook
Point services that emit webhooks (Uptime Kuma, Home Assistant, n8n,
Grafana…) at POST /v1/notify with your key in the Authorization header
and a JSON body with at least a title. If it speaks HTTP, it works with
stdpush.