Fetching latest headlines…
We audited 227 self-host OSS alternatives — 12% are stale or dead (State of Self-Host 2026)
NORTH AMERICA
🇺🇸 United StatesMay 10, 2026

We audited 227 self-host OSS alternatives — 12% are stale or dead (State of Self-Host 2026)

0 views0 likes0 comments
Originally published byDev.to

We run os-alt, a directory of paid SaaS and the open-source tools you can self-host instead. Once a month we re-run a build-time freshness check on every recommended GitHub repo we list. The first four monthly posts in this series sorted projects one vertical at a time (PagerDuty alts, link-in-bio, Datadog, license-drama). This is the first one that zooms out across the whole corpus.

The full report — with sortable tables, methodology, citation-ready JSON-LD, and re-derivable numbers from /api/health.json — lives at the canonical URL. This dev.to write-up is the readable summary.

Findings at a glance

  1. 19 of 164 (12%) of self-hostable alternatives we track haven't shipped a commit in 90+ days. 10 of those (incl. a handful of archived repos) are over a year cold.
  2. 10 repos with ≥1,000 stars have no commit in 180+ days. Popular and maintained are not the same thing, and a directory that doesn't surface this is silently routing people toward unmaintained software.
  3. 0 of 99 SaaS categories in our directory have no mature open-source self-host option. But 28 of 99 categories have ≥2 listed alts and only one is alive — a brittler picture than the headline suggests.

Data is a live GitHub fetch at build time across 227 unique repos listed as alternatives to 100 paid SaaS. The full audit, with thresholds, caveats, and disclaimers, is below — and on the canonical page.

1 · The freshness distribution

The single number worth quoting: 12% of self-hostable alternatives are stale or dead.

  • 145 alive — last commit ≤ 90 days
  • 9 stale — 91–365 days
  • 10 dead — > 365 days, or repo archived on GitHub
  • 63 unknown — anonymous GitHub API rate-limited that many repos on the dev-container build; the production Vercel build resolves most of them. The page shows an unknown legend item when there are any. We exclude unknown from the percentage denominator so the 12% number doesn't drift on rate-limit luck.

The healthy cohort is healthier than the 12% headline suggests. Median commit age across the 145 alive repos is 2 days. Half of the alive alternatives have committed within the last 48 hours. The other half are inside the 90-day window but moving at a normal-for-OSS cadence. That distribution shape matters — when you pick an "alive" tool from a directory like this, the median active project is shipping right now, not eight weeks ago.

The 12% bad-news number is also the number we'd quote against ourselves. A directory of self-host alternatives is only as good as its freshness check, and the freshness pill on every alternative card on os-alt is exactly point 4 of our wedge. Twelve percent isn't catastrophic; the catastrophe is the directories that list those same repos without telling you.

2 · Big and quiet

10 repos with ≥1,000 stars in our directory have no commits on the default branch in the last 180 days.

This is the cohort that surprised us most. Star count is a sticky signal — a project can pick up tens of thousands of stars over five years and then quietly stop shipping, and the star count just keeps drifting up from people who star "to read later". Without a freshness check, a self-host shopper picking by star count gets routed at random toward these.

A few examples from the live list:

  • Maybe Finance — 54.1k stars, last commit 10 months ago
  • Focalboard (Mattermost) — 26.1k stars, 11 months quiet
  • UVdesk — 18.6k stars, 7 months quiet

Focalboard is the canonical case. Mattermost stepped away from active Focalboard development in 2023, and community forks now carry the torch under different names. The 26k-star GitHub repo is still the first result when you search "self-hosted Trello alternative" — it just isn't where the work happens anymore. Maybe Finance and UVdesk are the same story without the convenient fork-and-rename: still findable, still well-starred, no longer shipping.

The full list is on the report page, and the /insights/ page tracks this cohort across builds — projects flipping in and out of "big and quiet" is a louder signal than the static count.

3 · Where the OSS bench is thin

This is the section that came out happiest, and also the one where the headline number hides a real risk.

Zero of 99 SaaS categories in our directory have no mature open-source self-host option — where "mature" means at least one alive listed alternative with ≥ 500 GitHub stars. Every category we cover has at least one credible OSS pick, by that bar. That's the least surprising-good finding in the audit, but it's also a real selection-bias disclosure: our corpus is biased toward SaaS that already have well-known OSS alternatives. The thin-categories count would be larger if we widened to every SaaS without a directory entry.

The more honest number from the same section is the concentration risk: 28 of 99 categories have ≥ 2 listed alternatives but only one is alive. If that one repo ever stops shipping, the open-source story for that whole category collapses to "the bench is thin" overnight. That's a much sharper failure mode than "no OSS option" — it's "the OSS option is one maintainer's continued energy."

This is where the license-drama post earlier in this series ties in: Sentry, MongoDB, Elasticsearch, and Redis are all categories where the flagship open-source pick is alive but its license has stopped being open. In the freshness audit they read green. In the concentration-risk read, three of the four have exactly one alive alternative that's not under a non-OSI license — meaning the freshness pill is hiding a real coverage gap. We'll have a structural way to flag that in the June sweep.

4 · Top alive — the "lean on these" shortlist

If you're going to bet a weekend on a self-host migration and want a list filtered down to just the alive, well-maintained, high-traction picks, here are the top 10 most-starred alive alternatives in the directory:

# OSS Stars Last commit
1 n8n 187.4k 1 day
2 Excalidraw 122.9k 4 days
3 Immich 100.2k today
4 Hugo + Decap CMS 88.0k today
5 Uptime Kuma 86.5k today
6 vLLM 79.6k today
7 Hoppscotch 79.1k 9 days
8 code-server 77.5k 2 days
9 Grafana stack (Mimir + Loki + Tempo) 73.7k today
10 Apache Superset 72.8k 1 day

(Numbers refresh on every build; the canonical page shows the live ordering.)

These aren't recommendations to switch to — they're the picks where the freshness signal is loud, the star count is real, and the maintainers haven't gone quiet. The right way to read this list is: if your category has one of these as its self-host option, the concentration risk is low. If your category's only alive pick is a 1.2k-star repo with two contributors, the freshness pill is green but the bench is one maintainer thin.

5 · Methodology and caveats

Same disclosure as on the canonical page. The numbers above will drift slightly on every rebuild because they're computed against live GitHub state, not against a snapshot table.

  • Sample. 227 unique GitHub repos listed as alternatives across 100 paid SaaS pages on os-alt. Curated by hand; not exhaustive of the open-source ecosystem. Full list with health flags.
  • "Stale" and "dead" definitions. Last commit on the default branch > 90 days = stale. > 365 days, or repo archived on GitHub = dead. These thresholds are coarse on purpose — many maintained projects in long-tail categories ship infrequently, and a 91-day-quiet repo is not necessarily abandoned. It shows up in the stale bucket regardless. The thresholds match the freshness pills on every alternative card on the site so the report and the per-tool pages don't disagree.
  • "Mature self-host option" definition. ≥ 1 listed alt that is alive AND has ≥ 500 GitHub stars. Stars are a noisy popularity signal; the 500 cutoff is editorial, not statistical. Lowering it to 100 would shrink the thin-categories count further. Raising it to 2000 would explode it.
  • Build-time, not point-in-time. All numbers refresh on every deploy against live GitHub state. The page is regenerated from scratch each time, so figures will drift week-to-week. Snapshot-vs-live diffs are on /insights/.
  • Selection bias. The corpus is biased toward better-known SaaS with at least one well-known OSS alternative — by construction. The "thin categories" number would be larger if we widened to every SaaS without a directory entry. The honest reading: within a curated set that already has open-source picks, this many categories still have only one alive option.
  • SaaS pricing. Lowest paid-tier monthly price per SaaS (free tiers count as $0). One seat. Ignores volume discounts and annual commits. The full corpus self-hosted on one shared VPS comes out to roughly $44,166/year in theoretical savings — the right reading is per-pick, which is what /calc/ computes.

How to use this

If you're picking a self-host target this quarter:

  • Don't pick by stars alone. Ten of the most-starred projects in our directory haven't shipped in over six months.
  • Don't trust a freshness pill in isolation. Check the concentration risk — is your category's "green" pick the only green pick? If so, you're betting on one maintainer.
  • License matters separately from freshness. Sentry's pill is green and Sentry's license is not OSI-approved. We added the license-drama post for exactly this reason.

We'll re-run this audit in June. Month-over-month diffs are where the loud signal lives — alive → stale in 30 days is much sharper than a static "X projects are dead today". If you'd like that diff in your inbox, the form on the canonical page picks up subscribers.

Until then: every category page on os-alt shows the freshness pill on each alternative, today. A 30-second check tells you whether the replacement is worth the weekend. We'd rather you find out from us than from a git clone followed by a confused stare at the last commit date.

Comments (0)

Sign in to join the discussion

Be the first to comment!