v1.6.0

GitHub stats
beyond 14 days.

Self-hosted traffic dashboard for your repos — see stars, forks, views, and clones over 30, 60, 90 days. One binary. SQLite. No SaaS.

$ curl -fsSL https://get.gghstats.com/install.sh | sh
$ export GGHSTATS_GITHUB_TOKEN=ghp_xxx
$ gghstats run --open
curl -fsSL https://get.gghstats.com/install.sh | sh

// Overview

Infographic: gghstats permanent GitHub traffic analytics versus GitHub’s 14-day limit — self-hosted SQLite, head-to-head scoring, and Docker, Helm, and Homebrew deployment.

Download high-resolution infographic — feel free to share

Recent releases

v1.6.02026-09-09

UI
  • Responsive dashboard: collapsible rail, light/dark/midnight, language autonyms (#46)
  • Gated Settings (token modal → HttpOnly session) usable behind Traefik / 0.0.0.0
  • Bulgarian + Russian locales; optional soft theme via GGHSTATS_CUSTOM_CSS; mobile sidebar close (#56)

v1.5.12026-08-30

Featured
  • Featured showcase is not a report surface (#47): catalog rows show without a collected `repos` row
  • Nav, `/featured`, Featured API, and sitemap `/featured` use the catalog again
  • Fail-closed empty dashboard until the next sync after 1.5.0 is unchanged

v1.5.02026-08-30

Privacy
  • Report visibility: `repo report ls/set` + `GGHSTATS_REPORT_PRIVATE`, fail-closed by default
  • Traffic freshness/coverage per metric (fresh / delayed / missing / failed / never)
  • Chart-aligned JSON download, gap-vs-zero legend, and report inventory JSON

v1.4.02026-08-29

UI
  • Locale-aware chart ticks/tooltips and clone-statistics numbers (#22)
  • JSONL export UTC filename; Rank header; native stats help tooltips (#23–#25)
  • Unique cloners/viewers primary UX; Featured API + sitemap when showcase is non-empty

Engineering report v1.6.0 · Full changelog on GitHub

// 01 · Self-hosted

Go binary + SQLite. Runs on your bastion, your laptop, a Raspberry Pi. No accounts, no rate limits, no third-party dashboards.

// 02 · Past 14 days

GitHub's web UI caps at 14 days. gghstats snapshots traffic and renders 30+ day trends per repo and aggregated.

// 03 · One GitHub token

Set GGHSTATS_GITHUB_TOKEN (fine-grained PAT). While the dashboard runs, gghstats syncs traffic from the GitHub API in the background.

// Quick start

Optional: generate config from the CLI instead of hand-editing env vars.

$ gghstats --print-sample-config > ./gghstats.env  # adjust
$ export GGHSTATS_GITHUB_TOKEN=ghp_xxx
$ gghstats run --open

`run` is an alias for `serve`; `--open` opens the browser when the dashboard is ready. Background sync starts automatically.

Production (VPS, TLS, Compose, Traefik, Helm):gghstats-selfhosted

// Repositories