Music to my ears.

Terz watches how your packages are doing (downloads, upgrades landing, stars, advisories) and plays it back on every screen you own: one page, your phone, your menu bar.

v0.1 is out · npm install -g terz-cli

the chart sample data
acme-clinpm · 30-day downloads 4,127 +617
acme-sdknpm · 30-day downloads 892 +62
acme/runnerDocker Hub · pulls 2,206 +48
acme-pyPyPI · 30-day downloads 311 held 4h

A chart, mid-run. PyPI didn’t answer this cycle, so its last good reading is held rather than lost. Sample data.

Readings

Every number says whether it came back.

A source going quiet is normal. It should never take the page down, and it should never quietly hand you a stale number as if it were fresh.

4,127

Live

The source answered this cycle.

311 held 4h

Held

The source didn’t answer. The last good reading stays on the chart, dimmed and marked with how long it has been held.

no data

No reading

Nothing came back, and there is nothing to hold. Never shown as a zero; zero is a real measurement.

How it runs

A collector, a contract, and every screen.

You list your packages

Once. Names and the registries they live on; that is the whole configuration.

A run happens on a timer

Every source is read, and each reading is appended to a plain file on disk. A source that fails is held, not fatal: the timer never crashes.

The page is rewritten

One static HTML file, no JavaScript, no server. Serve it, or open it off disk. Every app reads the same file, so every screen agrees with the chart.

Every screen

On every screen you own.

Your phone

Native apps for iPhone and Android. Home-screen and lock-screen widgets, a Control Centre control, Siri, a quick-settings tile, and a nudge when a reading moves.

Your menu bar

A desktop app that lives in the tray on macOS and Linux. The number is just there, all day, without a tab open.

The chart

The one-page chart every run rewrites. It is the source of truth the apps read: one contract file, one design, everywhere.

Sources

Where the readings come from.

npm PyPI Docker Hub jsDelivr MCP Registry GitHub GitLab Forgejo Bitbucket

More sources land as each one is proven against a real registry, rather than announced ahead of it.

Self-hosted first.

The collector runs where you run it. Your numbers never leave the box, nothing here can rate-limit you or change its price, and if this site disappears tomorrow your chart still updates at half past the hour. And if you’d rather not run anything, the hosted mode is live at app.terz.dev, reading the same contract. Your box or ours. Your call.

npm install -g terz-cli