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 → OutageDeck → AWS → Salesforce Trust → Google Cloud → AI Studio → incident.io → Better Stack → Instatus → Statuspage → OnlineOrNot → FireHydrant → Checkly → Uptime.com → RSS.

ProviderExamplesDetection
Railwaystatus.railway.comHostname match
OutageDeckoutagedeck.com/providers/githubProvider URL; normalized public API
AWShealth.aws.amazon.comHostname match
Salesforce Truststatus.salesforce.com/products/Heroku, status.heroku.comHostname match
Google Cloudstatus.cloud.google.com, status.cloud.google.com/products/vertex-gemini-apiHostname match
AI Studioaistudio.google.com/statusHostname match
incident.iostatus.openai.com, linearstatus.com/proxy/{host}/component_impacts JSON API
Better Stackstatus.yachtway.com/index.json JSON:API
Instatusinstat.us/summary.json
Statuspage.iostatus.claude.com, GitHub, Vercel/api/v2/summary.json
OnlineOrNotstatus.openrouter.ai, *.onlineornot.comPublic /v1/status_pages/{subdomain or hostname}/summary API
FireHydrantstatus.redis.io/data/payload.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 similar proxy URLs without incident.io endpoints such as component_impacts. For redirected pages such as status.linear.app, the adapter follows the redirect to linearstatus.com and reads the proxy JSON API there.

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.

OnlineOrNot is checked after Statuspage. Hosted pages use {subdomain}.onlineornot.com. For custom domains such as status.openrouter.ai, the adapter passes the hostname to the public summary API at /v1/status_pages/status.openrouter.ai/summary.

FireHydrant status pages expose current status at /data/payload.json on the page origin. The adapter runs before Checkly, which must download and parse the full HTML page.

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 OutageDeck adapter accepts any outagedeck.com/providers/{slug} URL and reads the keyless public API. It provides a consistent vendor-published status, service breakdown, and active-incident shape for cloud and SaaS providers, based on their official status feeds.

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.

The Google Cloud adapter reads the Service Health dashboard's public incidents.json and products.json feeds. The dashboard has no per-product URLs, so the adapter supports a path convention: add https://status.cloud.google.com/products/{product-name} (e.g. vertex-gemini-api for the Gemini API on Vertex, or vertex-ai to match all Vertex AI products). The bare domain shows only products with recent incidents, since listing all ~200 as operational adds no signal.

The AI Studio adapter covers aistudio.google.com/status (Gemini API, Gemini Live API, and Google AI Studio for developers using API keys rather than Vertex). The page has no REST API; the adapter calls the same protobuf-JSON RPC the page itself uses, extracting the page's public referrer-restricted API key from the HTML at runtime.

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
    outagedeck.ts        # OutageDeck normalized public API
    onlineornot.ts       # OnlineOrNot public summary API (e.g. OpenRouter)
    firehydrant.ts       # FireHydrant /data/payload.json (e.g. Redis)
    rss.ts               # generic RSS feed fallback (e.g. status.x.ai)
    aistudio.ts          # Google AI Studio / Gemini API incidents RPC
    googlecloud.ts       # Google Cloud Service Health incidents/products JSON
    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