Status pages, incidents and browser checks.
Pingtower started as the part that wakes a person up. The last few weeks filled in what happens around that page: checks that test a whole sign-in instead of one URL, an incident that keeps the story, and a status page that tells your customers once your team knows. All of it is live, and all of it is free during preview.
Status pages
Build a status page from the checks and rules you already have. Group
them into components, pick what each one means when it fails (degraded,
partial or major outage), and publish at your-name.ptwr.net or on a
subdomain of your own. Or keep a page to your team: private pages are
members-only, with no password to share around.
The page shows each component’s state, 90 days of daily uptime bars, incidents with their updates, and scheduled maintenance. It needs no JavaScript and has a light and a dark mode.
What it does not show is every blip. An outage reaches the page once someone acknowledges the alert, or after 15 minutes, and then it is backdated to when it really started. A timeout that clears in a minute pages nobody’s customers. If a false positive does get through, an admin can edit or hide it.
For your own site there are status and uptime badges, and a one-line banner script that appears only while an incident is open. It sets no cookies.
Incidents
Incidents now belong to the team and are numbered: INC-14, not a URL
you have to find again. Each one has a stage (investigating, identified,
monitoring), an optional severity and a lead, and a timeline where your
internal notes stay internal. Nothing goes on a status page until someone
writes a public update.
While an incident is open, new alerts from the same rule join it instead of starting a second thread, and they still page as usual. When every alert on it has resolved, the lead gets a push. The incident doesn’t close itself: resolving asks for the cause and the fix, so the next person who sees it fire knows what happened last time.
Connect GitHub or GitLab (self-managed works too) and an incident can open an issue as it opens. Resolving it comments the cause and fix on that issue, and closes it too if you turn that on. A pull request that references the issue shows up in the incident’s timeline when it merges.
Browser checks
Write a Playwright test, the same file you
would run locally, and Pingtower runs it in headless Chromium from the
regions you pick. Every run gets a fresh gVisor sandbox. Each
test.step is timed and reported on its own, Core Web Vitals come with
the result, and a failed run keeps its screenshot, video and Playwright
trace for a week, so you can see the exact frame where checkout broke.
Browser checks run every 5 minutes at most, and one costs more of a plan’s check budget than a simple check: on Free, one browser check fits, every 400 seconds or less often, from one region. The free plan includes 100 browser minutes a month and Pro 3,000; when they run out, browser checks pause until the 1st. Nothing is charged for them.
API checks, and more of them
HTTP checks now take up to 20 assertions on status, response time, headers, JSONPath and a body hash, and sign in with basic, bearer, mTLS or OAuth client credentials. Secrets are sealed at rest and never shown again.
Multi-step API checks chain up to ten of those requests: log in, take the token from the response, call the endpoint that needs it, and assert at every step. A failure names the step. On pingtower.com both run as hosted checks today; your own agent runs them from addons agent 0.4.0.
New hosted kinds: gRPC (the standard health protocol), WebSocket (connect, send, expect a reply) and domain expiry, which reads the registry’s RDAP record and warns 30 days ahead. Addons agent 0.4.0 adds UDP and SMTP, IMAP and POP3 checks for your own boxes, with a warning before the mail server’s certificate runs out.
Confirmed in seconds
A check that runs from several regions used to wait for each region’s next turn. Now, when one region sees a failure, every other region re-runs the check at once. A bad route in one place is dismissed in seconds, and a real outage is confirmed in seconds too. By default a check still pages only when most of its regions agree.
Jobs that don’t run
Every source can have a heartbeat URL. Hit it from the end of your cron
job; hit /start first and Pingtower records how long the run took, or
/fail to report a failure. A ping can carry up to 4 KiB of the job’s
output. Give the rule the
job’s cron schedule and
timezone, and a grace period, and it pages when a run is missed or starts
and never finishes. Daylight saving time is handled.
Quiet on purpose
Maintenance windows can be one-off or repeat on a calendar, and cover a whole project or just the checks and rules they touch. Alerts are still recorded, nobody is paged, and the time doesn’t count against your uptime. Mark a window for the status page and it shows there, in blue, with the next week’s windows listed as upcoming.
A noisy rule can be muted until a time you choose, up to 90 days. In both cases, an alert still firing and unacknowledged when the quiet ends pages then.
Uptime and response times
Every check and status-page component has an uptime report for the last 7, 30 or 90 days, or any range up to a year: uptime, the number of outages, total and longest downtime. Mean time to acknowledge and to resolve come per project and for the whole team. Export any of it as CSV.
Roles
Beside owner, admin and member there are now responder (works alerts, incidents and on-call overrides, changes no configuration) and viewer (reads everything, changes nothing). If none of those fit, build up to 20 custom roles from 47 permissions. Any member can be limited to the projects they work on, with a different role on each, and they’re only paged for projects they can see. The details.
Logs you can search
Stored lines can now be searched across every project with a small query
language: words, "exact phrases", env:prod, host:web-3,
level:>=warn, latency_ms:>500, and a minus to exclude. Search comes
with counts by source, environment, host and level, a chart of matches
over time, the lines around any hit, and saved searches for yourself or
the team. New sources keep their lines by default.
Ingest also takes batches now: up to 1,000 events in one request, as NDJSON or a JSON array.
Secrets caught at the door
When a line looks like it carries a bearer token, a password in a URL, a
JWT or an AWS key, Pingtower opens a warning alert that never escalates.
The finding records where it came from, never the secret itself. If the
value is real, block it: it becomes [redacted] in new lines and in the
lines already stored, and Pingtower keeps only a hash of it.
Discord, and AI assistants that can help
Discord joins Slack and Telegram as a channel, and @everyone in a log
line pings nobody.
The MCP connector for Claude and ChatGPT can now do more than read, if an owner allows it. Each power is ticked separately: acknowledge and resolve alerts, mute a rule, schedule maintenance in the next 24 hours, create and edit checks, and open an incident as a suggestion, attach alerts, add internal notes, link an issue and draft a resolution. An assistant never publishes anything, never resolves an incident and never deletes. Everything it does is labelled as AI in the audit log.
Try it
All of this is on pingtower.com today, free during preview with no card. Status pages, incidents, maintenance windows and uptime reports have no plan limit of their own, and on a self-hosted tower they run on your own box.