LivingKioskUse now
← All displays

Heartbeat 3000

Your vitals as a late-night broadcast. Heartbeat 3000 takes the data your Apple Watch already collects and plays it back as a mid-80s scope terminal — phosphor green on black glass, four panels on a slow rotation, a ticker along the bottom. It is meant to be seen from across the room, not read.

Current conditions panel: a large 75 BPM readout in phosphor green beside an intraday heart rate trace, with steps, active energy, exercise minutes and stand hours.
Current conditionsLive heart rate, today’s intraday trace, rings.
Overnight report panel: time asleep, resting heart rate and HRV above a stacked deep, core, REM and awake sleep stage bar.
Overnight reportLast night: time asleep, stages, resting HR, HRV.
Extended forecast panel: one column per day for the last week with sleep and step bars, plus resting heart rate and HRV trend lines.
Extended forecastSeven days of sleep, steps, and trend lines.
Subject scan panel: a green wireframe human figure rotating on a turntable with bracketed callouts to cranial, thoracic, core and lower-body readings.
Subject scanA wireframe body on a turntable, annotated per region.

Where the data comes from

Health Auto Export on iOS posts your Apple Watch metrics on a schedule. Heartbeat stores them and draws from its own copy — nothing is pulled from a third party while the display is up.

Where it runs

Self-hosted today: single container, one SQLite file, on your own machine. A hosted option — somewhere for a Watch to send data without running a server — is what is still being worked out.

What it wants

A 16:9 screen you are not otherwise using. It scales as one unit, so it reads the same on a 5K monitor and a wall-mounted tablet.

Setup

Put Heartbeat 3000 on a screen.

A browser is genuinely enough — Plash and Fully Kiosk below are conveniences, not requirements.

Any screen

nothing to install
  1. Open the display in whatever browser the screen already has.
  2. Go full screen: F11 on Windows and Linux, ⌃⌘F on macOS.
  3. Or give it a browser of its own, which is what a dedicated panel wants: chrome --kiosk <url> — on macOS, open -a "Google Chrome" --args --kiosk <url>.
  4. Turn off display sleep in the machine’s power settings and walk away.

Mac desktop

via Plash
  1. Install Plash from the Mac App Store — it renders any web page as your desktop wallpaper.
  2. Menu bar icon → Open URL… and paste the display’s address.
  3. Leave Browsing Mode off so clicks pass through to your desktop as normal.
  4. Plash reloads on wake, so it recovers on its own after sleep.
sindresorhus.com/plash →

Wall tablet

via Fully Kiosk
  1. On any Android tablet, install Fully Kiosk Browser.
  2. Settings → Web Content → Start URL: the display’s address.
  3. Under Device Management, keep the screen on and set a dim schedule so it isn’t glaring at 3am.
  4. Turn on Start on Boot so a power blip brings the display back by itself.
fully-kiosk.com →

Displays are ordinary web pages, so anything that can hold one open works: a Raspberry Pi on a monitor, a retired iPad, a Fire tablet, the browser built into a TV.

Configuration

URL parameters.

Heartbeat 3000 isn’t hosted yet, so there is no /setup page to build the URL for you — add parameters to the bare URL by hand, as documented in the README that ships with it.

ParameterDefaultMeaning
/Normal rotation, 12 seconds a panel.
panelPin one panel: current, overnight, forecast, scan, or an index 03.
panelsRotate through a comma-separated subset, in the order given.
cycle12soff stops rotating; a number changes the dwell time in seconds.
/bodyThe full subject record — every metric on file, sleep log, workout log.
dim0Black scrim over everything, 0 to 0.8 (fleet-wide convention).

Heartbeat 3000 is open source under the MIT licence. Run it yourself with one command — the repositories go public at launch.