Why we call them scores

· scores, design, community

📅 April 23, 2026 · Leo from Caereforge

If tempo in music means the speed at which a piece is played (slow or fast) and its rhythmic structure organized in steady measures (until it changes), then it’s the scores that set the cadence of those measures.

The events that our servers and tools send across the network — to be understood and handled by Tempo — need to follow patterns. Scores.

That’s why Tempo ships with a set of preconfigured scores at launch. The ones I use most in my own homelab, plus a few common-ask sources I included so most setups have something to start from on day one.

Before the list, one concept worth a paragraph. Some sources speak as one — Kopia is Kopia, Uptime Kuma is Uptime Kuma. Others are families. UniFi covers Network and Protect with very different signals. Hazel can be driven by file rules, Mail rules, or anything you wire up to it. Scripts is a single banner over every Bash, Python, or launchd one-liner you point at Tempo. For these, Tempo uses an umbrella score: a parent identifier (e.g. com.noodlesoft.hazel) that covers any sub-source whose identifier starts with that prefix (com.noodlesoft.hazel.mail, com.noodlesoft.hazel.keepa, and so on). You get sensible defaults for the whole family, and you can drop in a more specific score whenever a single sub-source earns its own actions.

Bundled with the app:

Plus Apple Calendar and Reminders, pre-wired via EventKit. They don’t share the main timeline — they live in their own panel next to it, which you can show or hide, so the day’s entries stay one glance away without diluting the homelab feed.

From the public reviewed catalog at github.com/caereforge/tempo-scores, one double-click away:

An experimental CalDAV engine (Fastmail-focused) ships in v1.0.3 behind an opt-in shell flag — see the docs if you want to try it.

Installing a score is dead simple: download it, double-click it, the installer window opens, and the score is ready to go.

In another post I wrote: the payload is input, the score is policy, you’re the author. And that’s exactly how it works — the score tells Tempo how to read an event; you decide what it should do in response.

Tempo is open to the community and it handles a huge range of inputs — pretty much all the common ones across self-hosted and cloud tools. Discussion happens in the Discord (link in the menu), and PRs to the score catalog get reviewed and merged.

The Tempo that each of you builds on top of your own infrastructure will be different. And that’s exactly the point.


Leo from Caereforge