Status as code
Keep your whole status page in a committed pingpage.yaml and apply it from a terminal or CI.
pingpage.yaml
name: Acme Status
slug: acme
branding:
brand_color: "#00aaff"
page_title: Acme
components:
- key: api
name: API
monitor:
url: https://api.acme.com/health
interval: 60s
- key: web
name: Website CLI
# install
go install github.com/rundock-dev/pingpage/cli@latest
# validate locally, diff against live, then apply
export PINGPAGE_ORG=<org-uuid>
export PINGPAGE_TOKEN=pp_live_...
pingpage validate
pingpage diff # exit 1 on drift — gate PRs with it
pingpage apply # PUT the file (add --prune to delete removed components) GitHub Action
# .github/workflows/status.yml
name: status
on:
pull_request:
push: { branches: [main] }
jobs:
status:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- if: github.event_name == 'pull_request'
uses: rundock-dev/pingpage@v1
with:
command: diff
org: ${{ vars.PINGPAGE_ORG }}
token: ${{ secrets.PINGPAGE_TOKEN }}
- if: github.ref == 'refs/heads/main' && github.event_name == 'push'
uses: rundock-dev/pingpage@v1
with:
command: apply
org: ${{ vars.PINGPAGE_ORG }}
token: ${{ secrets.PINGPAGE_TOKEN }}