Status page

Farsight publishes a status page at /status. It lists only the monitors you mark public, under their public name and public group, so hosts, addresses and error messages never show. It is server-made HTML, cached for 30 seconds, small (about 15 KB on the wire for 19 services), and it works from a small phone to a wide screen. One small script of its own makes it quicker and friendlier (below); without it, everything still works.

What it shows

Bars: green; amber when the period had any confirmed outage or fell below 99.9% (months: below 99.9% only, so one short blip leaves a month green; the label still says how long it was down); red below 99%. Before a service was first watched, its bars are a thin line and the label under them says "Since 1 Oct" instead of pretending the time was up or down. A figure never reads 100% for a period that had downtime.

The script

The page carries one script, from Farsight itself (nothing inline, nothing from elsewhere; the page's security policy allows nothing more). It does three things:

Without scripts, tabs are plain links, times are in the page's time zone, and Refresh reloads the page.

On a phone's home screen

Visitors can add the page to a phone's home screen (Share, Add to Home Screen on an iPhone; Install app on Android), and it opens as an app of its own, with no browser bars. Its icon is Farsight's, or one made from your logo: the dashboard draws it when you upload a logo (your logo on the page's background, square, as phones want), and Make it again draws it anew after you change the theme. The name under the icon is the title, or a shorter Name you set under Page, Home screen (phones show about 12 characters). A phone keeps the icon and name it was given when the page was added: remove and add the page again to see a change.

More pages

Editing it

Status page in the dashboard has three tabs over one set of changes, and one Save:

Beside the tabs (or behind Preview on a narrower screen) is a live preview: the real page with your changes, drawn by the same code as the public page, as a desktop or a phone, light or dark, at any range. Nothing is public until you save, and the page shows it within 30 seconds. The logo is the one exception: it is saved as soon as you choose it.

Unsaved changes are kept on this device until you save or discard them, so going Back, reloading or closing the app never loses them (the editor says so when they come back); leaving by a link reminds you they are not live yet. Signing out clears them. A save sends only what you changed, so it never undoes a change made elsewhere in the meantime, and it is all or nothing.

Agents and scripts get the same preview from POST /api/v1/status-page/preview (see the API reference).

How it looks

Under Status page in the dashboard (or PUT /api/v1/status-page):

SettingChoices
LayoutHorizon (a summary panel, sections that fold away while all is fine), Classic (a large state line, a card per section), Ledger (dense rows, one per service, everything on about one screen)
Themefollow the visitor, light, dark
Accentany colour (links, tabs, response lines)
Status coloursgreen and red, or blue and orange (easier for colour-blind readers)
TypefaceGeist, IBM Plex Sans, or the visitor's system font
Barsthe worst moment of each period, or how much of each period was down; rounded, square or slim
Rangeswhich of 24 h, 7 d, 30 d, 90 d, 12 mo, and the default
Showresponse times, uptime figures, the summary (turning a figure off removes it everywhere, the JSON too)
Sectionsfold the ones that are all fine (they open by themselves when a service has trouble)
Refreshrefresh every minute, for a screen on a wall
Logoa PNG, JPEG, WebP or SVG of 256 KB at most, also the page's icon in browser tabs and, made into a square, on the home screen (PUT /api/v1/status-page/logo, then PUT /api/v1/status-page/icon)
Home screen namethe name under the icon, 30 characters at most; empty means the title
Website and linksyour site (the logo links there and the footer names it) and up to 3 links in the header

The title and the intro line sit at the top; the footer names your site and says the page is powered by Farsight.

Your own domain

Add the name (for example status.example.com) under Page, Custom domains and save. Farsight shows the one DNS record to add: an A record (and AAAA when the server has IPv6) pointing at the server, with the proxy off. When the domain's DNS is at Cloudflare, Open Cloudflare DNS opens the zone's records page. Farsight then watches the domain's own nameservers (every 30 seconds until it is live, at once after a save), so a record added a minute ago is seen at once; when it points here, Farsight gets a certificate for it from Let's Encrypt by itself, in about a minute, with nothing to restart. Each domain shows where it stands: waiting for DNS, points elsewhere, proxied by Cloudflare (switch the orange cloud to DNS only), getting a certificate, live, or certificate failed (with Let's Encrypt's reason; after three failures in a row Farsight waits an hour, then longer each time up to a day, under Let's Encrypt's limits). A live domain whose renewal fails keeps its certificate and says so. Requests for the domain get the status page at /, and the page installed from there opens at /. Removing the domain stops its certificate's renewals.

Farsight can only do this when it serves HTTPS itself (the default). Behind your own proxy, the proxy needs the certificate, and the editor says so.

JSON

The same data is public at /api/public/status?range=90d for embedding elsewhere (bars, uptime, typical response, page links; never monitor ids or hosts).