Status pages, uptime checks, alerts, on-call, errors and logs.

Checks every minute from four regions, alerts that repeat until acknowledged, errors and logs from your apps.

StatOSSstatoss.statoss.com19:25 UTC

StatOSS is up.

All 7 monitors are responding. 2 timeouts in the last 24 hours.

Get updates

passed, height is the response timetimed outfailedslowslow abovedeploy markerSelect a bar for its checks.

Website

Up for 43 d 19 h99.99% passed

62,821 checks, median 142 ms from Copenhagen, 4 timeouts, 45 slow, 285 during maintenance

95% under 305 ms

Response time by region
EuropeEurope142 ms
N. AmericaNorth America527 ms
AsiaAsia841 ms
OceaniaOceania608 ms

Medians over this range, on one scale up to 1,000 ms. Europe's places are scaled to Copenhagen, its fastest shared place.

  • Timed out49 s, 1 check
  • Timed out1 min, 1 check
  • Timed out1 min, 1 check
  • Timed out1 min, 1 check

Dashboard

Up for 1 d 3 h99.97% passed

62,827 checks, median 195 ms from Copenhagen, 17 failed checks, 12 timeouts, 288 slow, 285 during maintenance

95% under 327 ms

Response time by region
EuropeEurope195 ms
N. AmericaNorth America695 ms
AsiaAsia1,221 ms
OceaniaOceania896 ms

Medians over this range, on one scale up to 1,500 ms. Europe's places are scaled to Copenhagen, its fastest shared place.

  • Timed out1 min, 1 check
  • Timed out2 min, 2 checks
  • Timed out1 min, 1 check
  • HTTP 50360 s, 1 check
  • Connection reset1 min, 1 check
  • Timed out1 min, 1 check

and 5 earlier failed runs in this window

Failures older than 14 days show on the bars only.

Status pages

Up for 43 d 19 h99.98% passed

62,782 checks, median 180 ms from Copenhagen, 8 failed checks, 7 timeouts, 70 slow, 284 during maintenance

95% under 332 ms

Response time by region
EuropeEurope180 ms
N. AmericaNorth America297 ms
AsiaAsia503 ms
OceaniaOceania550 ms

Medians over this range, on one scale up to 800 ms. Europe's places are scaled to Copenhagen, its fastest shared place.

  • Timed out1 min, 1 check
  • Timed out1 min, 1 check
  • Timed out1 min, 1 check
  • Timed out1 min, 1 check
  • Timed out1 min, 1 check
  • Timed out1 min, 1 check

and 1 earlier failed run in this window

Failures older than 14 days show on the bars only.

Errors and logs intake

Up for 11 d 10 h99.98% passed

16,455 checks, median 123 ms from Falkenstein, 2 failed checks, 1 timeout, 33 during maintenance

95% under 185 ms

Response time by region
EuropeEurope123 ms
N. AmericaNorth America356 ms
AsiaAsia576 ms
OceaniaOceania938 ms

Medians over this range, on one scale up to 1,000 ms. Europe's places are scaled to Falkenstein, its fastest shared place.

  • HTTP 5301 min, 1 check
  • Timed out1 min, 1 check

Polar: API

Operational for 18 d 10 h

As reported on status.polar.sh

Polar: Checkout

Operational for 18 d 10 h

As reported on status.polar.sh

Polar: Webhooks

Operational for 18 d 10 h

As reported on status.polar.sh

The page for StatOSS itself, checked once a minute. Yours has the same layout with your own monitors.

One monitor, one day

An API on an example page, from the minute its monitor is added to the same time the next day.

  1. 23 Oct

    Add a monitor

    Add the URL. Test requests it at once and shows the status code and the response time.

    Exampleexample.statoss.com23 Oct16:35 UTC

    Add a monitor

    The add-a-monitor form with the name API, the URL https://api.example.com/health, and the test result: Passed: 200 in 174 ms.

  2. 23 Oct

    Every minute, from six places

    Each bar is the median response time of the checks around it, so one slow check makes no spike. On Hobby and Pro the regions take turns, a minute each, from Helsinki in Finland, Falkenstein in Germany, Copenhagen in Denmark, Ashburn in the USA, Singapore and Sydney in Australia.

    Exampleexample.statoss.com23 Oct23:40 UTC

    Example is up.

    API is responding. No failed checks in the last 24 hours.

    Updated

    Get updates

    passed, height is the response timetimed outfailedSelect a bar for its checks.

    API

    Up for 7 h 5 min100% passed

    426 checks, median 111 ms from Falkenstein, all passed

    95% under 145 ms

    Response time by region
    EuropeEurope111 ms
    N. AmericaNorth America324 ms
    AsiaAsia653 ms
    OceaniaOceania142 ms

    Medians over this range, on one scale up to 800 ms. Europe's places are scaled to Falkenstein, its fastest shared place.

    Past incidents

    No incidents in the last 7 days.

    Incident history

  3. 24 Oct

    One check times out

    Singapore gets no answer within ten seconds, and a second try gets none either. The check gets a mark on the strip, amber for a timeout and red for any other failure, and no alert goes out.

    Exampleexample.statoss.com24 Oct02:50 UTC

    Example is up.

    API is responding. 1 timeout in the last 24 hours.

    Updated

    Get updates

    passed, height is the response timetimed outfailedSelect a bar for its checks.

    API

    Up for 10 h 16 min99.83% passed

    616 checks, median 112 ms from Falkenstein, 1 timeout

    95% under 146 ms

    Response time by region
    EuropeEurope112 ms
    N. AmericaNorth America333 ms
    AsiaAsia674 ms
    OceaniaOceania147 ms

    Medians over this range, on one scale up to 1,000 ms. Europe's places are scaled to Falkenstein, its fastest shared place.

    • Timed out1 check so far, unconfirmed

    Past incidents

    No incidents in the last 7 days.

    Incident history

    API

    02:45 to 02:55

    6
    Checks
    1 failed
    1 timed out
    192 ms
    Median response
    192 to 192 ms
    Fastest to slowest

    By location

    • Ashburn, USA, up and down onlymedian 397 ms over 2 checks
    • Copenhagen, Denmarkmedian 192 ms over 1 check
    • Singapore, up and down onlymedian 898 ms over 1 check
    • Sydney, Australia, up and down onlymedian 171 ms over 1 check

    Every check

    1. Timed out02:50:00

      From Singapore. Checked again there: failed too

    2. 200 in 397 ms02:49:00

      From Ashburn, USA

      DNS 4 ms, connect 71 ms, TLS 95 ms, first byte 227 ms

    3. 200 in 192 ms02:48:00

      From Copenhagen, Denmark

      DNS 4 ms, connect 35 ms, TLS 46 ms, first byte 107 ms

    4. 200 in 171 ms02:47:00

      From Sydney, Australia

      DNS 3 ms, connect 31 ms, TLS 41 ms, first byte 96 ms

    5. 200 in 898 ms02:46:00

      From Singapore

      DNS 4 ms, connect 162 ms, TLS 216 ms, first byte 516 ms

    6. 200 in 440 ms02:45:00

      From Ashburn, USA

      DNS 4 ms, connect 79 ms, TLS 106 ms, first byte 251 ms

    Times are UTC.

  4. 24 Oct

    Down

    The next check fails too. Two in a row make the monitor down: the headline says so, an incident opens on the page and one alert goes out.

    Example: API is down02:51

    From StatOSS alerts, [email protected]

    API (https://api.example.com/health) is failing.

    Error: timeout

    Down since 24 Oct 02:51 UTC.

    Open in the dashboard

    Exampleexample.statoss.com24 Oct02:51 UTC

    Example is down.

    API is down, open for 1 min. 2 timeouts in the last 24 hours.

    Updated

    Get updates

    API is down

    Investigating

    Since , 1 min so far. Affects API.

    1. Investigating. API stopped responding to checks (Timed out). Opened automatically.
    passed, height is the response timetimed outfailedSelect a bar for its checks.

    API

    Incident openDown for 1 min, since 99.67% passed

    617 checks, median 112 ms from Falkenstein, 2 timeouts

    95% under 146 ms

    Response time by region
    EuropeEurope112 ms
    N. AmericaNorth America333 ms
    AsiaAsia674 ms
    OceaniaOceania147 ms

    Medians over this range, on one scale up to 1,000 ms. Europe's places are scaled to Falkenstein, its fastest shared place.

    • Timed out2 min so far, 2 checks

    Past incidents

    No incidents in the last 7 days.

    Incident history

  5. 24 Oct

    Back up

    The next check passes, the incident is resolved and one more alert says so. The two failed checks stay on the strip, and the list under it gives the reason, the start time and how long it lasted.

    Example: API recovered02:52

    From StatOSS alerts, [email protected]

    API (https://api.example.com/health) is back up.

    Downtime: 1 min

    Time: 24 Oct 02:52 UTC

    Open in the dashboard

    Exampleexample.statoss.com24 Oct02:52 UTC

    Example is up.

    API is responding. 2 timeouts in the last 24 hours.

    Updated

    Get updates

    passed, height is the response timetimed outfailedSelect a bar for its checks.

    API

    Up for 1 min99.67% passed

    618 checks, median 113 ms from Falkenstein, 2 timeouts

    95% under 146 ms

    Response time by region
    EuropeEurope113 ms
    N. AmericaNorth America333 ms
    AsiaAsia674 ms
    OceaniaOceania147 ms

    Medians over this range, on one scale up to 1,000 ms. Europe's places are scaled to Falkenstein, its fastest shared place.

    • Timed out2 min, 2 checks

    Past incidents

    API is down

    , resolved after 1 min. Affects API.

    1. Resolved. Recovered after 1 min. Resolved automatically.
    2. Investigating. API stopped responding to checks (Timed out). Opened automatically.

    Incident history

  6. 24 Oct

    Slow

    This monitor has a slow threshold of 400 ms, and from 13:00 its responses take longer. After two in a row the headline changes, the bars over the line turn indigo and an alert goes out.

    Example: API is slow13:01

    From StatOSS alerts, [email protected]

    API (https://api.example.com/health) is responding, but slowly.

    Response time: 1,292 ms, over the 400 ms threshold

    Time: 24 Oct 13:01 UTC

    Open in the dashboard

    Exampleexample.statoss.com24 Oct14:00 UTC

    Example is slow.

    API has been responding slowly for 59 min. 2 timeouts in the last 24 hours.

    Updated

    Get updates

    passed, height is the response timetimed outfailedslowslow aboveSelect a bar for its checks.

    API

    Slow for 59 min99.84% passed

    1,286 checks, median 148 ms from Falkenstein, 2 timeouts, 16 slow

    95% under 233 ms

    Response time by region
    EuropeEurope148 ms
    N. AmericaNorth America447 ms
    AsiaAsia894 ms
    OceaniaOceania189 ms

    Medians over this range, on one scale up to 3,000 ms. Europe's places are scaled to Falkenstein, its fastest shared place.

    • Timed out2 min, 2 checks

    Past incidents

    API is down

    , resolved after 1 min. Affects API.

    1. Resolved. Recovered after 1 min. Resolved automatically.
    2. Investigating. API stopped responding to checks (Timed out). Opened automatically.

    Incident history

  7. 24 Oct

    Deploys on the strip

    The release pipeline posts each deploy to the API, and the page draws it as a dashed line: v2.14.0 at 12:58, v2.14.1 at 14:28. Responses are back under 400 ms from 14:30, and one more alert says so.

    curl -X POST \
      https://statoss.com/api/v1/pages/PAGE_ID/deploys \
      -H "Authorization: Bearer sk_..." \
      -H "Content-Type: application/json" \
      -d '{"version": "v2.14.1"}'
    Example: API is back to normal speed14:30

    From StatOSS alerts, [email protected]

    API (https://api.example.com/health) is responding at normal speed again.

    Slow for: 1 h 29 min

    Time: 24 Oct 14:30 UTC

    Open in the dashboard

    Exampleexample.statoss.com24 Oct14:40 UTC

    Example is up.

    API is responding. 2 timeouts in the last 24 hours.

    Updated

    Get updates

    passed, height is the response timetimed outfailedslowslow abovedeploy markerSelect a bar for its checks.

    API

    Up for 10 min99.84% passed

    1,326 checks, median 152 ms from Falkenstein, 2 timeouts, 23 slow

    95% under 424 ms

    Response time by region
    EuropeEurope152 ms
    N. AmericaNorth America452 ms
    AsiaAsia909 ms
    OceaniaOceania193 ms

    Medians over this range, on one scale up to 3,000 ms. Europe's places are scaled to Falkenstein, its fastest shared place.

    • Timed out2 min, 2 checks

    Past incidents

    API is down

    , resolved after 1 min. Affects API.

    1. Resolved. Recovered after 1 min. Resolved automatically.
    2. Investigating. API stopped responding to checks (Timed out). Opened automatically.

    Incident history

  8. 24 Oct

    Visitors

    Visitors see every check of the last 24 hours at the page's StatOSS address, or at your own domain on Pro, and the range switch goes back as far as the plan keeps history. On Pro they subscribe to incident updates by email or in a Slack channel.

    Examplestatus.example.com24 Oct16:35 UTC

    Example is up.

    API is responding. 2 timeouts in the last 24 hours.

    Updated

    Get updates

    passed, height is the response timetimed outfailedslowslow abovedeploy markerSelect a bar for its checks.

    API

    Up for 2 h 5 min99.86% passed

    1,436 checks, median 152 ms from Falkenstein, 2 timeouts, 23 slow

    95% under 416 ms

    Response time by region
    EuropeEurope152 ms
    N. AmericaNorth America460 ms
    AsiaAsia909 ms
    OceaniaOceania197 ms

    Medians over this range, on one scale up to 3,000 ms. Europe's places are scaled to Falkenstein, its fastest shared place.

    • Timed out2 min, 2 checks

    Past incidents

    API is down

    , resolved after 1 min. Affects API.

    1. Resolved. Recovered after 1 min. Resolved automatically.
    2. Investigating. API stopped responding to checks (Timed out). Opened automatically.

    Incident history

    Get updates

    Incidents, maintenance and outages by email. Unsubscribe any time.

    Checks run every minute. Times are UTC. The page reloads by itself.

    Powered by StatOSS

Eight kinds of check from six places

Two failed checks in a row make an outage, and one passed check ends it. A second location confirms every failure before it counts.

What a monitor can be

Where the checks run from

  • Copenhagen, Falkenstein, Helsinki

    Europe

  • Ashburn

    North America

  • Singapore

    Asia

  • Sydney

    Oceania

  • London, Paris, San Jose, São Paulo, Toronto

    $4 a month each

  • Johannesburg, Tokyo

    $8 a month each

  • A fixed IP on an added place

    $4 a month

On Hobby and Pro the regions take turns every minute, and a page picks which ones count toward its response times. Free checks every 5 minutes, from Europe.

API

Up for 21 h 7 min99.86% passed

1,440 checks, median 152 ms from Falkenstein, 2 timeouts

95% under 416 ms

Response time by region
EuropeEurope152 ms
N. AmericaNorth America454 ms
AsiaAsia923 ms
OceaniaOceania197 ms

Medians over this range, on one scale up to 3,000 ms. Europe's places are scaled to Falkenstein, its fastest shared place.

  • Timed out2 min, 2 checks
A lane under the bars for each region. A monitor down from some regions only says which, on the page, in the alert and in the incident.

One alert per change: down, slow, back

Email on every plan. Hobby and Pro add these channels, set per page, with a delivery record for each one.

Example: API is down02:51

From StatOSS alerts, [email protected]

API (https://api.example.com/health) is failing.

Error: timeout

Down since 24 Oct 02:51 UTC.

Open in the dashboard

Where it can go

SlackDiscordMicrosoft TeamsTelegramPagerDutyOpsgeniePushoverntfyA signed webhook

  • A slow threshold adds a slow state with its own alert.
  • Maintenance windows run the checks without counting them, and send nothing.
  • Deploys posted from CI draw a dashed line on the strip.

On-call, compatible with PagerDuty and Opsgenie

Anything that sends to PagerDuty's Events API, Opsgenie's Alert API or Sentry's webhooks sends to api.statoss.com instead, with a source's key.

  • Repeats until acknowledged

    every 5 minutes

  • An acknowledgement lasts

    4 hours, or until resolved

  • Hobby

    one person, 3 sources

  • Pro

    the team, 50 sources

  • Pro adds

    escalation policies and schedules

  • Import

    PagerDuty and Opsgenie, on Pro

Northwind: Checkout latency over 2 seconds19:21

From StatOSS alerts, [email protected]

Critical alert #214 from Sentry.

Paged through Platform, level 1 of 2.

Affected: northwind.example/checkout

p95 2,310 ms, over the 2,000 ms threshold

Opened 24 Oct 19:20 UTC.

AcknowledgeResolveOpen in the dashboard

On Pro each person picks how they are reached: email, Pushover, ntfy or Telegram. There are no phone calls or SMS. On-call in the docs

Incidents, subscribers and your own domain

Everything on the status page besides the strips, and who gets to see it.

Past incidents

API is down

, resolved after 21 min. Affects API.

  1. Resolved. The pool is back and the checks pass. Resolved automatically.
  2. Identified. A connection pool ran out behind a slow database failover. Restarting it.
  3. Investigating. API stopped responding to checks (Timed out). Opened automatically.

Post-mortem

Summary

A database failover left the API's connection pool empty. Requests timed out until the pool was restarted.

What we are changing

The pool's size and the failover timeout now follow the database's own settings.

An incident as the page lists it: opened by the checks, updated by a person, resolved when they pass, with the post-mortem under it. The names are made up.

On the page

  • Incidents you write, with updates, post-mortems and templates. On Pro, drafts from the check data.
  • Maintenance windows once, weekly or monthly, with a calendar feed.
  • An uptime target and the month's error budget.
  • Your logo and colours, a light or dark theme, and your time zone.

Who hears and who sees

  • Subscribers by email, Slack, Discord, Teams or webhook, 1,000 a page on Pro.
  • A password on the page, or private pages for the people and email domains you allow, on Pro.
  • Your own domain with the certificate handled, on Pro.
  • A status badge, status.json, RSS and Atom feeds, a widget and llms.txt.

Errors from your apps, with any Sentry SDK

Change the DSN and events land in an app, grouped into issues, on every plan.

# Any Sentry SDK takes the DSN. So do @statoss/sdk and the Python statoss package.
import * as StatOSS from "@statoss/sdk";

StatOSS.init({
  dsn: "https://<key>@ingest.statoss.com/<app number>",
  environment: "production",
});

# Source maps and releases, from CI
export SENTRY_URL=https://statoss.com
export SENTRY_AUTH_TOKEN=<a StatOSS API key that writes>
export SENTRY_ORG=statoss
export SENTRY_PROJECT=<the app's slug>
sentry-cli sourcemaps upload ./dist
Free
5,000 a month, kept 30 days
Hobby
50,000 a month, kept 30 days
Pro
500,000 a month, kept 90 days
  • Issues can be resolved, resolved in the next release, archived, assigned and merged. A regression reopens one.
  • An app's alert rules open on-call alerts on Hobby and Pro. On Free, new high-priority issues are emailed, 25 a month.
  • Each app has its own levels, categories and fields, and the TypeScript SDK checks them at compile time.

ErrorsSend errors

Logs, $5 a month with 15 GB

An add-on to Hobby and Pro, kept beside the errors of the same app. $0.25 a GB past 15. Lines kept 30 days count twice.

npx @statoss/cli logs tail 'level:>=warn service:api' --app web
npx @statoss/cli logs search '"timed out"' --since 1h --limit 50
  • Lines come from @statoss/sdk, the Python package, Sentry's SDKs, OpenTelemetry, the Vercel, Fly, Cloudflare and Heroku drains, and plain JSON.
  • One search box takes words, phrases, regular expressions, key:value, ranges and levels.
  • Live tail, patterns with their counts, saved views, and log alerts through on-call.
  • Kept 14 days, or 3, 7 or 30. A daily cap per team, 1 GiB unless you set another.

LogsSend logs

The API and MCP server do what the dashboard does

Pages, monitors, incidents, alert destinations, subscribers, the team and API keys. Keys read or write, and reach every page or one.

# An MCP client, with a key
claude mcp add statoss https://statoss.com/api/v1/mcp \
  --transport http \
  --header "Authorization: Bearer sk_..."

# The same key makes a page, and its first monitor, over REST
curl -X POST https://statoss.com/api/v1/pages \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{"name": "Northwind", "url": "https://northwind.example/health"}'

# A deploy marker, from CI
curl -X POST https://statoss.com/api/v1/pages/PAGE_ID/deploys \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{"version": "v2.14.1"}'
  • A read-only MCP endpoint next to every status page, at /mcp.
  • An MCP client without a key signs its person in with OAuth 2.1, for read or read and write, every app or one. Settings, Connected apps lists and revokes them.
  • @statoss/sdk on npm, statoss on PyPI, and @statoss/cli for source maps, releases and logs.
  • Import from UptimeRobot, Better Stack, Statuspage or a CSV file, and export as CSV.
  • Billing and sign-in settings stay in the dashboard.

API referenceMCP and agents

Set up with an agent

Paste this into Claude Code, Codex or Cursor, in the project's folder.

Read the prompt
Set up StatOSS for this project.

1. Read https://statoss.com/auth.md and follow it: register as an anonymous agent, solve the proof of work, and exchange the assertion for a token.
2. Look through the project for what to watch: the public URLs it serves (the site, the API, health endpoints), the scheduled jobs that should check in, and whether it writes logs.
3. PUT a draft to https://statoss.com/api/v1/agent/draft: one status page named after the project, an http monitor for each URL, a heartbeat monitor with periodMinutes for each scheduled job, and one app for the project's errors with its platform. Ask me only what the project cannot tell you.
4. Ask me for my email address and start the claim with it. Give me the claim link and the 6-digit code in one message, and say that the code goes into the page, not back to you. Poll the claim grant at the interval it names until I have confirmed.
5. After the claim, for the app draft_result made: read its dsn with GET https://statoss.com/api/v1/apps/{appId}, install the SDK for the project's language as https://statoss.com/docs/send-errors describes, keep the DSN in the project's configuration rather than in its code, and send one test error. If the project writes logs, send them to the same app as https://statoss.com/docs/send-logs describes. For each heartbeat monitor it made, read its pingUrl with GET https://statoss.com/api/v1/pages/{pageId}/monitors/{monitorId} and add the ping to the job.
6. Tell me what you set up, with the dashboardUrl draft_result gives for each page and app, and what draft_result.leftOut says the plan left out.
How agents register

Pricing

Free needs no card. Hobby and Pro bill monthly through Polar and can be cancelled from the billing page.

What each plan includes
FeatureFree$0a monthHobby$4a monthPro$15a month
Status pages1110
Monitors110100, 50 per page
ChecksEvery 5 minutes, from EuropeEvery minute, four regions in turnEvery minute, four regions in turn
History7 days90 daysA year
AlertsEmailEmail, Slack, Discord, Teams, Telegram, PagerDuty, Opsgenie, Pushover, ntfy and webhooksThe same
On-callNoneOne person, 3 sourcesThe team, 50 sources, escalation and schedules
Errors a month5,000, kept 30 days50,000, kept 30 days500,000, kept 90 days
LogsNone$5 a month with 15 GB, then $0.25 a GBThe same
SubscribersNoneNone1,000 per page, blocks of 1,000 at $5
Your own domain, private pagesNoNoYes
People113, then $5 a month each, up to 25

The open source core, on your own server

statoss-standalone is MIT licensed: the same kinds of check, the same strip and page, incidents, maintenance windows and alerts to the same ten places. No limit on pages or monitors.

curl -o config.yaml \
  https://raw.githubusercontent.com/kroqdotdev/statoss-standalone/main/config.example.yaml
# Edit config.yaml; the example explains every field.
docker run -d --name statoss --restart unless-stopped \
  -p 127.0.0.1:3000:3000 \
  -v "$PWD/config.yaml:/data/config.yaml:ro" \
  -v statoss-data:/data \
  ghcr.io/kroqdotdev/statoss-standalone:latest
  • One container, configured with a YAML file. The image is ghcr.io/kroqdotdev/statoss-standalone.
  • A live demo at statoss.com/standalone-demo.
  • One command turns an Uptime Kuma database into a config.
  • The hosted plans add the dashboard, checks from four regions, subscribers, the API and MCP.

Get the source on GitHub