Extension Icon

Is It Alive?

Monitor status pages and check if your favorite services are operational.
Overview

Is It Alive? icon

Is It Alive?

Raycast extension that monitors status pages so you can quickly answer: is the outage on my side or theirs?

Add status page URLs, get a color-coded list of services, and drill into component-level detail with uptime history — without opening a browser tab.

Screenshots

Monitored sites list with live status

Site list — parallel fetch, status subtitles, and quick access to details.

Status detail view with 90-day uptime charts

Detail view — component breakdown, active incidents, and 90-day uptime history.

Supported status pages

The extension auto-detects the provider when you add a URL. Detection order: Railway → AWS → Salesforce Trust → incident.io → Better Stack → Instatus → Statuspage → Checkly → Uptime.com → RSS.

ProviderExamplesDetection
Railwaystatus.railway.comHostname match
AWShealth.aws.amazon.comHostname match
Salesforce Truststatus.salesforce.com/products/Heroku, status.heroku.comHostname match
incident.iostatus.openai.com/proxy/{host}/component_impacts API
Better Stackstatus.yachtway.com/index.json JSON:API
Instatusinstat.us/summary.json
Statuspage.iostatus.claude.com, GitHub, Vercel/api/v2/summary.json
Checklystatus.mistral.ai__NUXT_DATA__ payload in page HTML
Uptime.comstatus.uptime.com, uptime.com/statuspage/hackerrankReact props payload in page HTML
RSS fallbackstatus.x.ai/feed.xml (and common feed paths)

incident.io is checked before Statuspage because some Statuspage hosts expose proxy-style URLs that look similar but lack incident.io-only endpoints like component_impacts.

Instatus must also be checked before Statuspage: Instatus pages serve a Statuspage-compatible /api/v2/summary.json shim, so the Statuspage detector matches them even though the payload lacks Statuspage-only fields.

Checkly has no public JSON API for status pages, so its adapter parses the Nuxt (__NUXT_DATA__) payload embedded in the page HTML. It is checked late because its detection requires downloading the full page.

Uptime.com status pages embed their full state as React props in the page HTML; the adapter parses that payload and also calls the page's /history JSON endpoint for 90-day uptime and past incidents. Like Checkly, it is checked late because detection requires downloading the page. Both hosted (uptime.com/statuspage/{slug}) and custom-domain pages work.

The RSS fallback is checked last and covers pages whose APIs and HTML are blocked (e.g. status.x.ai sits behind a Cloudflare challenge but keeps /feed.xml reachable). It is incident-only: components are derived from incident titles, day history marks incident days, and no uptime percentage is available.

The AWS adapter reads the Health Dashboard's public currentevents endpoint (UTF-16 JSON) plus the 12-month historyevents.json S3 export. Components cover service–region pairs that have reported events; services with no events in the window don't appear.

The Salesforce Trust adapter uses the public api.status.salesforce.com/v1 API and covers any product page on status.salesforce.com (Heroku, Tableau, Mulesoft, Slack, …). Add https://status.salesforce.com/products/{Product} to monitor one product; the bare domain maps to the core Salesforce Services product. status.heroku.com is deprecated in favor of Salesforce Trust, so it maps to the Heroku product automatically.

Features

  • Site list — parallel fetch, status subtitle, incident accessories
  • Add / edit / delete — sites stored in Raycast local storage
  • Detail view — overview, active incidents, per-component status
  • Uptime charts — 90-day SVG bar history with uptime percentage

Usage

  1. Open Is It Alive? in Raycast
  2. Add a status page URL (display name is optional — it defaults to the page title)
  3. Press Enter to preview

Development

Requires Raycast, Node.js, and npm.

npm install
npm run dev      # run in Raycast dev mode
npm run lint     # lint + format check
npm run build    # production build

Project structure

src/
  alive.tsx              # main list command
  adapters/
    index.ts             # provider detection + registry
    statuspage.ts        # Statuspage.io v2 API
    aws.ts               # AWS Health Dashboard public events
    betterstack.ts       # Better Stack /index.json API
    checkly.ts           # Checkly __NUXT_DATA__ HTML payload
    incident-io.ts       # incident.io proxy API
    instatus.ts          # Instatus public /summary.json API
    railway.ts           # Railway status API
    rss.ts               # generic RSS feed fallback (e.g. status.x.ai)
    salesforce.ts        # Salesforce Trust API (also covers status.heroku.com)
    uptimecom.ts         # Uptime.com React props payload + /history JSON
  components/
    site-form.tsx        # add / edit form
    site-detail.tsx      # preview with uptime charts
  hooks/use-sites.ts     # local storage CRUD
  lib/
    fetch-json.ts        # shared JSON fetch helper
    snapshot-text.ts     # uptime labels + status descriptions
    status-colors.ts     # indicator + component colors
    uptime-chart.ts      # SVG chart generation + uptime math
    url.ts               # URL normalization + Railway host check
  types/                 # shared + provider-specific API types

Adding a new provider

  1. Add a SiteProvider variant in src/types/index.ts
  2. Add provider API types under src/types/ if needed
  3. Implement StatusAdapter (detect? + fetchSnapshot) in src/adapters/
  4. Register it in src/adapters/index.ts and update detectProvider

Each adapter normalizes its API into a shared StatusSnapshot shape so the UI stays provider-agnostic.

License

MIT