v1.0.02026-07-26
Stable- Stable default SQLite path (XDG / Application Support); GGHSTATS_DB always wins
- SPEC freeze for the 1.x API surface (additive minors only)
- Access-log client IP + alert dash URL fix (/{owner}/{repo})
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

Go binary + SQLite. Runs on your bastion, your laptop, a Raspberry Pi. No accounts, no rate limits, no third-party dashboards.
GitHub's web UI caps at 14 days. gghstats snapshots traffic and renders 30+ day trends per repo and aggregated.
Set GGHSTATS_GITHUB_TOKEN (fine-grained PAT). While the dashboard runs, gghstats syncs traffic from the GitHub API in the background.
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
| Repo | Role |
|---|---|
| hrodrig/gghstats | CLI, sync engine, dashboard, releases |
| hrodrig/gghstats-selfhosted | Compose, Traefik, Helm, operator docs |