coming soon: errors that fix themselves

ping

monitoring for people who ship alone.

subscribe to start receiving error alerts

scroll

01 — your endpoint

post errors here

json body

try it

bash # send a test error
curl -X POST \
  -H "Content-Type: application/json" \
  -d '{"title":"deploy failed","description":"exit code 1","content":"stack trace..."}'
view errors

02 — what it does

one endpoint

You get a unique URL. POST a JSON body with title, description, and content. That's your entire integration.

one push notification

When an error hits your endpoint, your phone buzzes. Tap it — you're looking at the full error, stack trace and all.

two files

The entire product is a Deno server and a service worker. No database migrations. No Redis. No infra. Just the thing.

03 — integration

javascript // in your catch block, your CI, your cron — anywhere
try {
  await deploy();
} catch (err) {
  await fetch("https://ping.worklyn.com/api/YOUR_ID/errors", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      title: "deploy failed",
      description: err.message,
      content: err.stack
    })
  });
}
Integrate ping error monitoring into this codebase. Endpoint: POST https://ping.worklyn.com/api/YOUR_CHANNEL_ID/errors Body: { "title": string, "description": string, "content": string } Steps: 1. Detect the primary language and framework in this project. 2. Add a global error handler using the language's native catch-all mechanism: Node: process.on('uncaughtException') + process.on('unhandledRejection') Python: sys.excepthook Go: recover() in a deferred function Rust: panic::set_hook Web frameworks: error middleware (Express, Django, Rails, etc.) Browser JS: window.addEventListener('error') + window.addEventListener('unhandledrejection') 3. In that handler, POST to the endpoint above with: title = error name or type description = error message content = full stack trace 4. Do NOT remove or replace existing error handling — this runs alongside it. 5. The POST must be fire-and-forget. Do not let it throw or block. Use a no-await fetch, background task, or language equivalent. 6. If a global handler already exists, add the POST inside it. Do not create a second one. 7. Keep the change minimal — one file if possible, no new dependencies.

You'll need PagerDuty eventually.

Today, you need ping.

One endpoint.

One push notification.

Two files.

That's the whole product.