How the health score is calculated
The score answers one question: is this project likely to still be maintained in two years? It says nothing about features, security or fitness for your use case.
Inputs
Everything comes from public repository metadata in the awesome-selfhosted dataset: monthly commit counts, tagged releases, star counts and archive status. We add no private data and run no crawlers of our own. The snapshot behind this build is from 2026-10-01.
The source keeps a rolling window of commit history whose most recent month is still in progress. We drop that partial month and measure the 11 complete months behind it, rather than assuming a fixed year — otherwise the oldest bar on every activity chart would read zero simply because the data does not go back that far.
The four components
| Component | Points | Basis |
|---|---|---|
| Maintenance | 40 | Commits over the last 11 complete months, expressed as a percentile against every scored project |
| Releases | 25 | Days since the most recent tagged release. Absolute thresholds, not relative |
| Community | 20 | Repository stars, as a percentile against every scored project |
| Momentum | 15 | Commits in the last 3 months against the 3 months before |
Why percentiles
Two components are scored relative to the whole catalogue rather than against fixed thresholds. Absolute thresholds sound more objective but behave badly: pick any cutoff for "enough commits" and a large share of projects cluster at the ceiling, which means the score stops distinguishing anything. Ranking against 1126 peers guarantees the scale stays spread out, and it cannot be inflated by pushing trivial commits, because everyone else's rank moves too.
Release recency and momentum stay absolute, because those two do have a meaning independent of the field. A release three years old is stale whether or not other projects are worse.
Current distribution
Across 1126 scored projects, the median is 63.
| Band | Score | Projects | Share |
|---|---|---|---|
| Thriving | 82–100 | 198 | 17.6% |
| Healthy | 68–81 | 259 | 23.0% |
| Steady | 52–67 | 310 | 27.5% |
| Slowing | 36–51 | 220 | 19.5% |
| At risk | 0–35 | 139 | 12.3% |
What the score does not measure
- Security. An actively developed project can still be badly written. We measure activity, not code quality or audit history.
- Features. A lower-scoring project may do exactly what you need while the leader does not.
- Stability of small projects. A finished, single-purpose tool that needs no changes will score low on commit volume. That is a real limitation of the method, and why "at risk" is worded as a prompt to check rather than a verdict.
- Non-GitHub development. Projects whose main activity happens on a mailing list, Codeberg or a private mirror will be understated.
- Forks and successors. A project can be effectively continued under a new name; the score follows repositories, not lineages.
Projects with no score
226 of the 1352 projects here are deliberately unrated. Our data source collects commit history and star counts for repositories hosted on GitHub. A substantial minority of self-hosted projects are developed on Codeberg, on self-hosted GitLab, or elsewhere — for those, no activity history reaches us.
An earlier version of this scoring scored them anyway, treating "no data" as "no activity". That produced the worst possible outcome: BookStack, which is actively developed on Codeberg, came out at 7/100 and labelled At risk. That is not a rounding error, it is a false accusation against a healthy project, and it is exactly the kind of mistake any reader can verify in thirty seconds.
So the rule is now absolute: no measurement, no score. An Unrated badge means we cannot see the data — it is not a negative signal, and unrated projects include some of the best-maintained software in this catalogue. Archived repositories are shown as Discontinued. Both are excluded from the percentile base, so that missing or dead entries cannot drag the scale down and flatter everyone else.
What the catalogue does not contain
Scope is inherited from the upstream dataset, and it has a deliberate boundary worth knowing about: monitoring, identity and SSO, and CI/CD are not covered here. awesome-selfhosted delegates those categories to its sister list, awesome-sysadmin. So you will not find Grafana, Zabbix, Netdata, Prometheus, Keycloak or Jenkins on this site — not because they are unworthy, but because they sit outside the catalogue we score.
We could import that list. We have chosen not to: it is a hand-maintained markdown document with no star counts and no commit history, so every entry would arrive unrated. A directory whose selling point is a health score should not pad itself with hundreds of entries it cannot score.
Update cadence
The source dataset is refreshed weekly and the whole site is rebuilt from scratch each time, so every score, ranking and comparison on this site reflects the most recent snapshot. Nothing here is hand-written per project, which means nothing here goes quietly stale.
Corrections
If a project is misrepresented, the underlying data is community-maintained and open to correction — issues can be filed against the upstream dataset, and the fix will flow into the next weekly rebuild here. See also data and attribution.