Skip to content

Compared with the alternatives

Several tools answer part of what ghchronicle answers: keeping GitHub traffic past fourteen days, drawing a star curve, or putting repository counts in Prometheus. They differ in what they cover, in whether a row carries the date the thing happened or the moment somebody looked, and in where the data ends up. This page sets eight of them beside ghchronicle, says where each cell comes from, and says when one of them is the better choice.

ToolWhat it coversHow long it is keptDated, or a current valueBackfill
ghchronicle34 families: traffic, stars, forks, workflow runs with their jobs and steps, pull requests, issues, commits, the event feed, notifications, alerts, billing and moreas long as the store it writes to keeps itdated: each point at the moment the thing happened; a top-ten list with no date at the start of its UTC day; a current state at the sweepyes, -backfill walks every enabled family back as far as the API answers, but reads only the newest hundred webhook deliveries per hook and at most 500 failed job logs per repository; not traffic older than 14 days, the event feed past GitHub’s ceiling, job logs older than 90 days, the names and exact times of the stars of a repository whose stargazer list the token cannot read (its stars are kept per day instead), or, from 2026-10-01, workflow runs older than the repository’s retention setting
GitHub itselftraffic: views and clones per day, the top ten referrers and paths; the event feed; the notification inbox; Actions runs, logs and artifactstraffic 14 days; the event feed up to 300 events and 30 days; the inbox 3 months unless saved; Actions logs and artifacts 90 days by default, and from 2026-10-01 workflow runs tooviews and clones by day; referrers and paths as one top-ten list for the whole 14 daysnot applicable: nothing older than those windows is served
KipHub Traffictraffic only: views and clones per day, and GitHub’s 14-day referrer listas long as its local JSON file is keptviews and clones by day, merged into one file on every fetchno: its README says to fetch more often than every 14 days
repohistorytraffic: clones, views, referrers and popular pages; star historyfrom the first sign-in ontraffic stored per repository and date; stars at the date of each one for the 400 pages of 100 it reads at most, the oldest 40,000, and the rest spread evenly over the days after the last one read and marked estimatedtraffic no, it starts at the first sign-in; stars from GitHub’s stargazer list
github-repo-statstraffic: views and clones per day, top referrers and paths; stargazers and forks over time“an arbitrarily long time frame”, as daily snapshots kept in gita daily snapshot of the traffic; stars and forks at the date of each one, and a daily snapshot of the star count that carries the curve past 40,000stars and forks yes, stars up to the oldest 40,000, a bound its source calls a GitHub API limit; traffic no
grafana/github-trafficviews and clones of the newest day in the window, the star count, top paths and referrers, the rate limitnot stated: whatever the Prometheus that scrapes it keepscurrent values, set on every runnone in its source
promhippie/github_exporterrepositories, organisations and their seats, billing, self-hosted runners, admin statistics; workflow runs and jobs from a webhookruns and jobs kept in its database for a purge window, 24 hours by default; the rest not statedcurrent values; the times of runs and jobs are exposed as timestamp valuesruns and jobs arrive only by webhook, as they happen; otherwise not stated
githubexporter/github-exporterper repository: stars, forks, watchers, open issues, pull requests, size, release downloads; the rate limitnot stated: whatever the Prometheus that scrapes it keepscurrent valuesnot stated
star-history.comstars onlynothing is kept for you: every chart is drawn from GitHub’s stargazer listdated by the starred_at of a sample of stars, not of each one: under 15 pages of 100 it reads every page and keeps about fifteen evenly spaced stars (every star under 30); from 15 pages on (16 in its SVG API) it reads that many pages spread across the list and keeps the first star of each; a last point is today’s totalthe whole curve, on every draw
ToolRuns asWrites toSelf-hosted
ghchronicleone Go binary for Linux, macOS and Windows; Docker; a systemd unit; a GitHub ActionInfluxDB, PostgreSQL, Graphite, Elasticsearch, Loki, OpenTelemetry, Telegraf, a file or stdout, and Prometheus as current values only; a generated Grafana dashboard for five of themyes
GitHub itselfgithub.com: the Insights graphs and the REST API; the traffic graph of a private repository needs GitHub Pro, Team or Enterprise Cloudnothing you ownnot applicable
KipHub Traffica Python script, with an optional Dear PyGui window, run by hand; last commit 2024-02-16a JSON file in a local JSONs folderyes, on your own machine
repohistorya hosted service at repohistory.com, installed as a GitHub App, collecting once a day; free for one repository, paid for moreits own Supabase database; CSV exportthe source is AGPL-3.0; running your own copy is not stated
github-repo-statsa GitHub Action, once a day, one repository per jobCSV files and an HTML and PDF report, committed to a branchyes, in your own repository’s Actions
grafana/github-traffica Docker container, in Python, hourly by default; for a user or an organisationa Prometheus endpoint on port 8001; Grafana dashboard 15000yes
promhippie/github_exportera Go binary, DEB and RPM packages, containers; the webhook collectors need it reachable from the interneta Prometheus endpoint; Chai (the default in most of its release builds), SQLite, MySQL or PostgreSQL for the webhook datayes
githubexporter/github-exportera Docker container, in Go, on port 9171a Prometheus endpointyes
star-history.coma hosted website, a Chrome extension, and an API that renders the chart as SVGan image to embedhosted; its README’s development section runs it locally

The rows for the other tools are what each one’s own README, documentation or source says at the commit linked, read on 2026-09-24, with “not stated” where it says nothing. Beyond the READMEs linked in the first table, the cells come from these files:

The row for GitHub comes from GitHub’s documentation, read the same day: traffic in the REST API, the traffic graph, the event feed, the notification inbox and Actions retention. The row for ghchronicle comes from this site: what is collected, dating a point, backfill, choosing a store and ways to install. Third-party tools change: check their pages before relying on a cell.

The column that separates these tools most is the fourth one. A Prometheus exporter holds a gauge, and the history of a gauge is the samples Prometheus took of it, each stamped when it was scraped. grafana/github-traffic sets its views gauge from the newest day of the fourteen, so what Prometheus keeps is that number as it stood at each scrape, stamped with the time of the scrape rather than the day it counts.

The tools that write files or rows can keep the day itself. KipHub Traffic, repohistory and github-repo-stats all store views and clones per day, which is the part of traffic that has a date, and github-repo-stats and repohistory draw stars from the date each one was given. ghchronicle applies the same rule to every surface it reads, and that rule is why its Prometheus side holds current values only: Prometheus refuses a sample dated days back, which dating a point measures.

Most tools on this page exist because of the second row. Traffic is fourteen days. The event feed serves up to three hundred events, none older than thirty days. The inbox keeps notifications for three months unless they are saved. Logs and artifacts are deleted after ninety days by default, and GitHub’s documentation says that from 1 October 2026 the same retention setting also deletes workflow runs, checks and commit statuses, which until then were kept for 400 days or more. A public repository can set it between one and ninety days; a private one up to 400.

What GitHub serves in those windows is complete while it lasts. For a question about the last two weeks, the Insights graphs and the REST API are the right tool.

  • A star chart for a README, and nothing else. star-history.com draws it from GitHub’s stargazer list on demand, with nothing to run and nothing to store. Since July 2026 GitHub serves that list only to a repository’s admins and collaborators (its starring page), and how star-history.com draws a chart for anyone else is not stated in the source pinned above. ghchronicle’s own card is a side feature and needs a token and a run.
  • Traffic for a few repositories, kept in git, with no database. github-repo-stats is a daily workflow with one job per repository, commits its data to a branch and publishes an HTML and PDF report. ghchronicle needs a store somewhere it can reach.
  • Traffic history without running anything. repohistory is a hosted dashboard behind a GitHub App, free for one repository.
  • A current count in a Prometheus you already run. githubexporter/github-exporter and grafana/github-traffic are one container each and are scraped like any other target. If a current count is all you want, they are the smaller thing to run.
  • Self-hosted runners, organisation seats or admin statistics. promhippie/github_exporter has collectors for all three, and ghchronicle collects none of them.
  • Traffic on one machine, with no server at all. KipHub Traffic keeps it in a JSON file and draws it in a desktop window, provided somebody runs it every fortnight.
  • Short answers: traffic past fourteen days, stars over time, Prometheus, organisations, in a paragraph each.
  • Dating a point: the rule behind the fourth column.
  • Choosing a store: what each of ghchronicle’s destinations keeps.
Written and maintained by
MIT licenceRelease history