Data hub
Machine-readable snapshots backing the State of Self-Host 2026 report. Free, no auth, CC-BY 4.0.
Every percentage in the report is recomputed at build time from these two surfaces. If you want to cite "12% of self-host alternatives are stale or dead" — or recompute it yourself against a different bucket — these are the source files.
Downloads
/data/freshness-2026-05.csv
Frozen monthly snapshot · 227 rows · CC-BY 4.0
One row per unique self-hostable OSS alternative. The May 2026 cut.
Future months will land at /data/freshness-YYYY-MM.csv as
separate URLs — old snapshots stay citable forever.
curl -sO https://code-rho-dun.vercel.app/data/freshness-2026-05.csv Columns
tool_slug— os-alt internal slug; resolves to/tool/<slug>/name— display namegithub_repo— GitHubowner/repostars— stargazers count at fetch time (integer or empty)last_commit_iso— ISO 8601 timestamp of last commit on default branch (or empty)last_commit_age_days— integer days since last commit at fetch time (or empty)health—alive,stale,dead, orunknown(see Methodology)archived—true/falselisted_under_saas_count— integer; number of SaaS pages on os-alt that list this OSSlisted_under_saas_slugs— space-separated SaaS slugs (each resolves to/<slug>/)
/api/health.json
Live build-time JSON · regenerates on every deploy
Same underlying corpus as the CSV, but always rebuilt against current GitHub state — use this for dashboards and bots that want the latest-deploy view rather than the frozen monthly snapshot.
curl -s https://code-rho-dun.vercel.app/api/health.json | jq '.counts' Methodology
- Sample. 227 unique GitHub repositories listed
as self-host alternatives across 100 paid SaaS pages on os-alt.
Hand-curated; not exhaustive of the open-source ecosystem. A repo listed
as an alternative under multiple SaaS appears once in the CSV with the
full
listed_under_saas_slugsset populated. - Health buckets. Computed from days since last commit on
the default branch:
alive— last commit ≤ 90 days agostale— last commit 91–365 days agodead— last commit > 365 days ago, OR repo is archived (regardless of commit age)unknown— GitHub API returned an error or last-commit timestamp could not be parsed
- Build-time, live fetch. Numbers are pulled at deploy
time via the GitHub REST API (
GET /repos/<owner>/<repo>and the latest commit on the default branch). The CSV is the May 2026 cut and never updates again — its URL is stable for citation. The JSON feed at/api/health.jsonrefreshes on every deploy. - Unknowns. Repos that fail to resolve (renamed, deleted,
404, rate-limited) get
health=unknownwith emptystars/last_commit_iso/last_commit_age_days. The report excludesunknownfrom percentage denominators. - Re-citing. Cite the report URL plus the snapshot URL — e.g. "os-alt, State of Self-Host 2026, freshness-2026-05.csv". The snapshot is the auditable backing; the report is the prose around it.
See the human-readable report at /state-of-self-host-2026/. Sortable + filterable browser view at /freshness/. Per-SaaS detail at /api/saas/.