12 healthy 1 warning 0 stale

Your key numbers, live on a wall.
Pushed, not scraped.

One self-contained binary. Your apps POST the numbers — active users, p95, signups, revenue — and upcheckr renders them on a TV-ready wall, live over SSE. No exporters, no scraping, no agents to babysit.

$brew install laurentiud/tap/upcheckr
Free forever — self-hosted No telemetry, no phone-home Single binary · SQLite inside SHA-256 on every download
The upcheckr live wall in full-screen control-room mode (dark): a world choropleth map, a Europe map, and a coordinate location map with value-sized dots, plus a paging countdown ring and live bar-chart metric tiles.
the control-room wall, full-screen on a TV — dark theme, auto-paging, health summary
500k points/min
sustained on a 2-vCPU VPS, zero dropped
<300 ms
wall render over 50M stored datapoints
~30 ms
binary boot — native image, SQLite inside
measured with the load-test harness shipped in the repo — not marketing figures

Your team's numbers deserve better than a dashboard no one opens.

Today they live in a Grafana nobody visits, a Datadog bill that scales with your host count, or a spreadsheet someone pastes into on Fridays. upcheckr puts them where the whole team can't miss them — a screen on the wall — without standing up a metrics stack to do it.

Full-screen TV wall

Built for a control room.

Enter full-screen wall mode: a chrome-free, dark control-room view that auto-pages across your metric pages with a live countdown ring — “next in 12s” — and a health summary at a glance. No flicker on updates; values animate smoothly as data arrives over Server-Sent Events. Mount it on a TV and leave it on the wall all day.

Full-screen control-room wall in dark mode auto-paging with a next-in-12-seconds countdown ring, a health summary, a world map and live bar-chart tiles.
Geographic maps

Your metrics, colored by country.

Tag any number with a country label — an ISO-3166 code like DE or US — and upcheckr colors a world map by value. See at a glance which regions run hot. A ranked legend sits beside the map and on-map labels stay readable, never overlapped. Live over Server-Sent Events — no refresh.

World choropleth map coloring metric values by country, with a ranked legend listing countries by value.
Coordinate maps

Every city, server, or site lights up.

For metrics tagged with coordinates, push a "lat,lng" and every location renders as a value-sized dot that lights up — and the map auto-zooms to your data. Works anywhere on Earth, no per-country map data required. Stores, warehouses, edge servers, cities: see exactly where the numbers are happening, with a ranked legend and a per-point breakdown below.

Coordinate map with value-sized location dots auto-zoomed to the data, each labeled with its value, plus a ranked legend and a per-point breakdown.
Per-metric detail

Drill into any metric.

Click any tile for a full detail page: current, peak and 24-hour average across instances, a time-series chart with selectable range (1h to 90d) and bucket (1m to 6h), combined / stacked / overlaid views, a per-instance contribution breakdown, and a live log of every push. For map metrics, the detail page leads with the map and a per-region or per-point breakdown.

Metric detail page showing current, peak and average, a 24-hour time-series chart with range and bucket controls, per-instance breakdown bars, and a recent-push log.

You already emit the numbers.
We just put them on the wall.

report-metric.sh
# emit a live number from anywhere in your app.
curl -X POST https://your-host/api/v1/metrics \
  -H "X-API-Key: acme_prod_…" \
  -d '{"name":"users_by_country","value":52,"instance":"web-1","labels":{"country":"DE"}}'

# → 200 OK · upcheckr recorded it.
# → it's on the wall — and on the map — live.
01

Push a number

POST a name, a value, an instance — and optionally a label like a country or a lat/lng. No exporters, no scraping, no agents to babysit — just an HTTP call from code you already wrote.

02

Define what matters

Pick the numbers worth watching and how they roll up — summed, averaged, last-value, or p95 — across every server reporting in, and choose a tile: bars, a number, or a map.

03

Leave it on the wall

One opinionated page, updating live. Go full-screen for the TV, drill into any metric for detail. A single self-contained binary with SQLite inside — run it anywhere and point a display at it.

Your metrics never leave your machine.

No telemetry, no account

The binary makes no outbound calls — no phone-home, no license check, no analytics. Active users, revenue, latency: business numbers stay on your box, in a local SQLite file you can back up with cp.

Zero-dependency ops

One native binary with SQLite embedded — no database server, no message broker, no JVM to install. Run it on a VPS, a NUC under the TV, or your laptop. Boots in ~30 ms; upgrades are “replace the file”.

Locked down by default

Admin password (BCrypt at rest), reveal-once API keys, CSRF protection, login rate-limiting with lockout, and a capped ingest body. Every download ships with a SHA-256 checksum. Security details →

Simple, like it should be.

Self-hosted
€0
Free, forever
Download the binary
  • Single self-contained binary
  • SQLite inside — no database to run
  • Maps, full-screen wall & detail pages
  • 7-day retention
  • Community support
Customizations
On demand
Let’s talk
Contact us
  • Bespoke metric views
  • Custom integrations
  • On-prem deployment help
  • Tailored retention & SLAs

Quick answers.

Does upcheckr phone home or send telemetry?
No. The self-hosted binary makes no outbound calls — your metrics stay on your machine, in a local SQLite file. There's no account, no license check, and no analytics in the product.
Can it do uptime checks or ping my servers?
No — upcheckr doesn't probe anything. It's a pushed-metrics wall: your apps POST numbers to it. If a source stops pushing, its tile is marked stale, which covers most is-it-alive questions without running a prober.
How is it different from Grafana?
Grafana explores data you already collect somewhere else (Prometheus, a TSDB). upcheckr is one self-contained binary that receives values directly from your apps over HTTP and puts them on a TV-ready wall — no scrape pipeline, no separate database, no query language. Full comparison →
What does it cost?
Self-hosting is free, forever — the full product: maps, TV wall mode, detail pages, thresholds. The optional Cloud tier (€29/month) adds alert delivery, 3-month history and managed hosting.
What do I need to run it?
One native binary (macOS, Linux, Windows) with SQLite embedded — no Java, no database server, no Docker required (though a multi-arch image exists). It boots in about 30 ms and runs fine on the smallest VPS.