Skip to content

Instantly share code, notes, and snippets.

@jackcrane
Last active February 14, 2026 04:27
Show Gist options
  • Select an option

  • Save jackcrane/ca760f5f66f25c41b94c5155793b9f5c to your computer and use it in GitHub Desktop.

Select an option

Save jackcrane/ca760f5f66f25c41b94c5155793b9f5c to your computer and use it in GitHub Desktop.

Revisions

  1. jackcrane revised this gist Feb 14, 2026. 1 changed file with 6 additions and 18 deletions.
    24 changes: 6 additions & 18 deletions pingpal.yaml
    Original file line number Diff line number Diff line change
    @@ -173,23 +173,6 @@ services:
    comment: "CoreDesk is suffering occasional segmentation faults, seemingly originating from Prisma. I am attempting to improve stability and prevent these faults, but they are intermittent."
    title: Segmentation Faults
    author: Jack Crane
    - id: faker
    name: Faker
    url: https://example.com
    group: Core Support Services
    outage:
    - outageId: 1ssrvwc5n
    comment:
    "*Requestor outage* the statuspage requestor went offline, not the
    service."
    author: Jack Crane
    title: Requestor outage
    - outageId: 29x5dov8e
    comment:
    "Purposeful outage: This service was intentionally put into a failing
    state to test email notifications."
    author: Jack Crane
    title: Purposeful outage
    - id: orw-api
    name: ORW API
    url: https://orw-api.jackcrane.rocks/weather
    @@ -199,4 +182,9 @@ services:
    - outageId: 4kswl6etg
    comment: "*Requestor outage* the statuspage requestor queued too many heartbeat pings against the ORW weather API, resulting in getting rate limited by an upstream provider."
    author: Jack Crane
    title: Requestor outage
    title: Requestor outage
    - id: jellyfin
    name: Jellyfin server
    url: https://stream.jackcrane.rocks
    expectedStatus: 200
    group: Core Support Services
  2. jackcrane revised this gist Feb 13, 2026. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions pingpal.yaml
    Original file line number Diff line number Diff line change
    @@ -171,6 +171,8 @@ services:
    outage:
    - outageId: snv5joawm
    comment: "CoreDesk is suffering occasional segmentation faults, seemingly originating from Prisma. I am attempting to improve stability and prevent these faults, but they are intermittent."
    title: Segmentation Faults
    author: Jack Crane
    - id: faker
    name: Faker
    url: https://example.com
  3. jackcrane revised this gist Feb 13, 2026. 1 changed file with 3 additions and 0 deletions.
    3 changes: 3 additions & 0 deletions pingpal.yaml
    Original file line number Diff line number Diff line change
    @@ -168,6 +168,9 @@ services:
    group: CoreDesk
    url: https://open-project-5skum.ondigitalocean.app/api/auth/me
    expectedStatus: 401
    outage:
    - outageId: snv5joawm
    comment: "CoreDesk is suffering occasional segmentation faults, seemingly originating from Prisma. I am attempting to improve stability and prevent these faults, but they are intermittent."
    - id: faker
    name: Faker
    url: https://example.com
  4. jackcrane revised this gist Feb 13, 2026. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions pingpal.yaml
    Original file line number Diff line number Diff line change
    @@ -68,6 +68,7 @@ services:
    title: Credential error
    comment: I rolled the db credentials and status monitor was not updated. DB never went down, but was rejecting heartbeats for a few minutes.
    - outageId: cz8rfn1y4
    author: Jack Crane
    title: Credential roll
    comment: I rolled the db credentials following the db experiencing odd behavior recently. Affected services were put on maintenance during this outage.
    - id: eventpilot
  5. jackcrane created this gist Feb 13, 2026.
    196 changes: 196 additions & 0 deletions pingpal.yaml
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,196 @@
    workspace:
    id: default
    name: Crane Digital Platforms
    description: A status page for tracking services run by Crane Digital Platforms
    defaults:
    intervalSeconds: 60
    expectedStatus: 200
    maxLatencyMs: 3000
    timeoutMs: 10000
    historyLimit: 200000
    failureLimit: 50
    criticalOutageSeconds: 120
    method: GET
    headers: {}
    notifications:
    notifyOnOutage: true
    notifyOnRecovery: true
    notifyOnDegraded: false
    degradedThresholdMs: 2500
    services:
    - id: portfolio
    name: Portfolio
    url: https://jackcrane.rocks
    - id: fosdata
    group: fosdata
    name: fosdata docs
    url: https://fosdata.pages.dev
    - id: fosdata-package
    group: fosdata
    name: fosdata Bechdel package
    url: https://fosdata.pages.dev/data/bechdel.rda
    intervalSeconds: 600
    - id: coolify-instance
    name: Coolify Instance
    url: https://admin.jackcrane.rocks/api/v1/health
    expectedText: OK
    group: Core Support Services
    description:
    The Coolify instance is a "mini-paas" that I deploy docker images
    against, providing orchestration and a low-cost hosting for my own
    projects. It is a single-node instance running several images. Databases
    and storage are hosted on different VMs or providers, and more resource
    intensive applications run on dedicated VMs or provisioned App Platform
    instances.
    - type: rabbitmq
    id: rabbit-mq
    name: RabbitMQ Instance
    group: Core Support Services
    connectionString: enc:rsa:v1:RgrQHoz92a/afQui7BBm8qum2Z/A2FaTVyxqKQoe47qr/O2+GtOir6WM7X85S24sRigGyhkZl+0tQeEMkUXgdNQodUNDsg9eb5Fs1BweFs742LFiIs2QDvfucOlkZJGuU9rJtwY47tX+uurcccgS2IcLO/WMIiSj8QU9HyWtJFWZivR0SN5OBMPL9Sn7Ujxdx0oY+t3zSLo8emAf/xjoaJbROredZcwHhAzU2Ab6kk+n+b7bOIMFwJ7ZG1Lj82wsr05dt3gnhREX3onwNFqfO9m9GoQOV/RsQkipSKIsH6AEn9oDQgAPnfE8KjV18yClFEKIgGEDmLODiOgJn9AYlQ==
    description:
    The RabbitMQ instance is a hosted instance of RabbitMQ, providing
    stable queue buildup and scheduling. It allows resiliency between the
    FeatureBench [server](/featurebench) and [worker](/featurebench-worker) as
    well as [EventPilot](/eventpilot).
    - type: redis
    id: redis
    name: Redis Instance
    group: Core Support Services
    description: The Redis Instance is a hosted key/value storage system that is
    used to power *this status page* and under the hood by
    [RabbitMQ](/rabbit-mq) instance which is used by [EventPilot](/eventpilot)
    and FeatureBench (both the [server](/featurebench) and the
    [worker](/featurebench-worker)). It shares a VM with my shared postgres,
    mysql, and [RabbitMQ](/rabbit-mq) instances.
    connectionString: enc:rsa:v1:BRlRewSu7y5FZkDng1h0QhecDz9NNhJXbzOBjQSwSl4c4jl5n9qTwDlu2mTUSVAyy5CMznLpvQ0GxXlpVzm6Zygty2oIlFHqGK8GsOsgT275THLGx/T3DQj3YxXow9AIP3gsrlXXe8jSMY/zw77A1jam+XWkTvDOQ28scrcRTV22OG3Ke+t1iudPSGR4L/Ppol89yTv8erLj0p5mbGlUHY1pYUyXReZ+y9DqHV/lurnbK4VT5anzNwHZfJolkmDUHoLie++YNDxCyeEcZafWYeKYhjZDCjOzvM75s9dvBl8aJp+75eiwO+HgIgGvvER1YGrTOhC5llYL23VVJJ4I3g==
    outage:
    - outageId: pdpraawjc
    title: Credential error
    comment: I rolled the db credentials and status monitor was not updated. DB never went down, but was rejecting heartbeats for a few minutes.
    - outageId: cz8rfn1y4
    title: Credential roll
    comment: I rolled the db credentials following the db experiencing odd behavior recently. Affected services were put on maintenance during this outage.
    - id: eventpilot
    group: EventPilot
    name: EventPilot homepage
    url: https://geteventpilot.com
    - id: eventpilot-docs
    group: EventPilot
    name: EventPilot docs
    url: https://docs.geteventpilot.com
    - id: og-image
    group: og-image
    name: OG Image Generator (landing page)
    url: https://og-image.xyz
    - id: og-image-image
    group: og-image
    name: OG Image Generator (image endpoint)
    url: https://og-image.xyz/og/statuspage/subtitle/og-image.xyz/https/menlo/candybar/black/data.png
    - id: paddlefest-volunteer-registration
    group: Paddlefest
    name: Paddlefest Volunteer Registration
    url: https://volunteer.ohioriverpaddlefest.org
    - id: paddlefest-volunteer-admin
    group: Paddlefest
    name: Paddlefest Volunteer Admin
    url: https://paddlefest-admin-simple.pages.dev/
    - id: paddlefest-volunteer-admin-api
    group: Paddlefest
    name: Paddlefest Volunteer API
    url: https://volunteer.jackcrane.rocks/admin/volunteers
    outage:
    - outageId: bgc9yyka5
    title: SSL Error
    comment:
    The Paddlefest Volunteer API experienced an SSL error. My orchestrator
    attempted to provision a SSL certificate for a wildcard domain, but
    the wildcard domain was not fully configured. The SSL certificate was
    provisioned, but was not valid. The heartbeat expects HTTPS with a
    valid SSL certificate, so the heartbeats failed.
    - id: rmp-x-courses
    name: Rate my Professors x Courses@SLU
    url: https://rmp-conn.jackcrane.workers.dev/api?name=D.%20Letscher
    expectedText: VGVhY2hlci0zMjUwMjQ=
    intervalSeconds: 180
    description:
    This is a simple API that wraps a DOM parser to extract instructor
    ratings from Rate My Professors. It is consumed by a chrome extension that
    plugs into Courses@SLU and displays professor ratings in the course
    listings. The API is a Cloudflare Worker with no external dependencies.
    The only potential source of an outage is a Rate My Professors outage or
    markup change, or a Cloudflare outage.
    - id: featurebench-worker
    group: FeatureBench
    name: FeatureBench Worker
    description: >-
    This is the autograder worker for FeatureBench. It is a box that runs a
    Solidworks instance with a thin API layer providing HTTP and queue
    consumption capabilities. Due to the architecture of this worker, frequent
    short outages are expected, but resilience is built-in and all requests
    sent while the worker is down are queued and retried at a best-effort
    basis. The FeatureBench worker is designed around eventual consistency,
    not realtime performance.
    As long as the [queue](/rabbit-mq) is online, requests through the FeatureBench website or API will be eventually processed and rectified in the db. If the queue is offline, the API will attempt to use HTTP to run grader invocations, but will operate with worstened performance and may not be able to satisfy all requests. In the event of significant outage, there should be an automatic provisioning of & failover to a backup.
    url: enc:rsa:v1:QeKmxQi/WVgY1IaQyPgWbKQ/vGfUhkawJnKbWmLDFkS5+Txv01AQsGR6soAp5reWxUTxVqdg22DNZjyf2XEi7kUNFyTDxZm19e9Xcb8m+clcGzBsBBL8B3CYKiEIjjhkTF94n0jh7mmR3610TTqEhAs1OPAoQgNbA4VlCsKeOmeOoa98hXuw3M+zYygfdF93iZv4Pfp9RkBuo/T05Qdh6bVtbs6VYZezpxGSAFH96NHs1MjY+Sa5hxf5xm5OIQlgnK+BgW2IIy3a2ba2vo0Q4bqjT3bIfckPDdU0AWX0M5osbzxgba0jXY43TlZ1zaMI/h2vTFT781OeWwLz7HTYgg==
    outage:
    - outageId: jnzk54v2z
    title: Forced error state
    comment:
    We forced an error state on the FeatureBench worker by purposefully
    expecting response text that would not be present. This was a test
    outage and the worker did not go offline.
    author: Jack Crane
    - outageId: 3f1oz1m6z
    comment:
    "*Requestor outage* the statuspage requestor went offline, not the
    service."
    author: Jack Crane
    title: Requestor outage
    - id: featurebench
    group: FeatureBench
    name: FeatureBench
    url: https://featurebench.com
    - id: featurebench-db
    group: FeatureBench
    name: FeatureBench DB
    type: postgres
    connectionString: enc:rsa:v1:rTpQQrbMdsxnfZKEiVUCrVbJU6Dar7UeTqGaqDaTmSGDGSPh+fRMoH4WqP0ZyNmU4sPU1c7ZQpfEDilkkK2k4mVImaSwEZO1Z12EA1MxNmZzGVGA/D/Lb0B6dDy7oF0anFZ+3hCgPKMJmXpgtSdVyndGqBP8RPB713hA5AEDUvW6SrsjR2oI+fnGW1CJ4lONGMVvk+sd8h3dWTGoaEcm89UAQWtnKF/hO31fSgL0VDLewCKSjmcV3Y9AZMyCeZhqKopWg1tsPcwe3fM05pNlw1ji8fl02qcd6gvr2sqM8pCqZfIs2T/1qsQ8LerKY6wx63I0ScI74R9fk4IgoW/YBQ==
    query: SELECT 1
    maxLatencyMs: 2000
    acceptance:
    expectedRows: 1
    minRows: 1
    maxRows: 1
    - id: coredesk
    name: CoreDesk API
    group: CoreDesk
    url: https://open-project-5skum.ondigitalocean.app/api/auth/me
    expectedStatus: 401
    - id: faker
    name: Faker
    url: https://example.com
    group: Core Support Services
    outage:
    - outageId: 1ssrvwc5n
    comment:
    "*Requestor outage* the statuspage requestor went offline, not the
    service."
    author: Jack Crane
    title: Requestor outage
    - outageId: 29x5dov8e
    comment:
    "Purposeful outage: This service was intentionally put into a failing
    state to test email notifications."
    author: Jack Crane
    title: Purposeful outage
    - id: orw-api
    name: ORW API
    url: https://orw-api.jackcrane.rocks/weather
    expectedText: weather
    intervalSeconds: 600
    outage:
    - outageId: 4kswl6etg
    comment: "*Requestor outage* the statuspage requestor queued too many heartbeat pings against the ORW weather API, resulting in getting rate limited by an upstream provider."
    author: Jack Crane
    title: Requestor outage