Skip to main content

GitHub Traffic Tracker

PyPI Release Date Python 3.10+ License GitHub Discussions Platform

Zero-server GitHub traffic analytics — daily collection, permanent history, smart badges.

Alpha Software: This tool is in early development. The core workflow and dashboard are stable, but CLI tooling is still evolving. See Current Status for details.

Live from this repo's own tracker:

Installs Views Clones

The Problem

GitHub's Traffic API only retains 14 days of clone and view data. After that it's gone forever. If you don't capture it daily, you lose permanent visibility into how your project is being used. There's no built-in way to accumulate traffic history over time.

GitHub Traffic Tracker solves this with zero infrastructure via a GitHub Actions workflow that collects your data daily and stores it in a Gist, giving you permanent traffic history with no servers and no cost.

How It Works

flowchart LR
    A["GitHub Actions<br/>daily · 3am UTC"] -->|"clones · views<br/>downloads · stars"| B["Public Gist<br/>state.json + badges"]
    A -->|"monthly"| C["Archive Gist<br/>long-term snapshots"]
    B -->|"client-side fetch"| D["Dashboard<br/>GitHub Pages"]
    B -->|"shields.io endpoint"| E["Badges<br/>README / anywhere"]

A GitHub Actions workflow runs daily at 3am UTC, fetching clone, view, download, star, and referrer data from the GitHub API. It merges new data into a running state.json stored in a public Gist, always preserving the highest values seen (merge upward, never erase). Shields.io-compatible badge JSON files are updated alongside the state. A separate unlisted Gist receives monthly archive snapshots for long-term storage. The static HTML dashboard reads directly from the Gist CDN, completing the loop with no backend at all.

Features

  • Daily data collection — Clones, views, downloads, stars, forks, referrers, popular paths
  • Permanent history — Accumulates beyond the 14-day API window indefinitely
  • Unique visitor tracking — Unique cloners and viewers alongside raw counts
  • CI clone detection — Separates organic clones from CI/CD checkout noise
  • Cascading recency badges — installs 1,234 (+18 24h) → (+88 wk) → (+145 mo)
  • Tabbed dashboard — Overview, Installs, Views, Community, Dev tabs
  • Monthly archives — Long-term snapshots in a separate unlisted Gist
  • Zero server — Pure GitHub Actions + Gist storage + client-side rendering

Quick Start

Prerequisites: gh CLI installed and authenticated, Python 3.10+

pip install github-traffic-tracker
ghtraf create --owner YOUR_ORG --repo YOUR_REPO --configure --repo-dir /path/to/your/repo

To redeploy templates without cloud setup (e.g., after upgrading ghtraf), use ghtraf create --files-only. See docs/parameters.md for all options.

Option B: Standalone script

# Interactive — prompts for all values
python setup-gists.py

# Or fully automated
python setup-gists.py --owner YOUR_ORG --repo YOUR_REPO --configure

# Preview without making changes
python setup-gists.py --dry-run

Both options will:

  1. Create a public badge Gist and an unlisted archive Gist
  2. Set repository variables (TRAFFIC_GIST_ID, TRAFFIC_ARCHIVE_GIST_ID)
  3. Guide you through creating a PAT with gist scope
  4. Optionally configure the dashboard and workflow files (--configure)

After setup, enable GitHub Pages (Settings > Pages > Deploy from branch > main, /docs) and push.

Verbosity & Diagnostics

ghtraf -v create ...              # Level 1 — setup steps, API calls, gist operations
ghtraf -vv create ...             # Level 2 — config detail, gist IDs
ghtraf -QQ create ...             # Quieter — warnings and errors only
ghtraf --show gist:2 create ...   # Show only gist channel at level 2
ghtraf --show                     # List all available channels

Eight named channels (api, config, gist, setup, general, hint, error, trace) let you see specific diagnostics without global noise.

For full parameter documentation, see docs/parameters.md.

Badge Showcase

Badge What it shows Example
Installs Downloads + clones combined, with cascading recency installs 1,234 (+18 24h)
Views Repository page views with recency views 5,678 (+92 24h)
Clones Git clones (organic, excluding CI) clones 890 (+7 24h)
Downloads Release asset downloads downloads 456

Recency cascades automatically: the badge shows the most recent non-zero period — (+N 24h) if there's activity today, otherwise (+N wk), then (+N mo). This gives visitors a sense of project activity at a glance.

[![Installs](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/USER/GIST_ID/raw/installs.json)](https://USER.github.io/REPO/stats/#installs)

Live Dashboards

This system is actively running on:

Roadmap

See ROADMAP.md or Issue #1 — Roadmap for the full plan.

Current Status

GTT is in early alpha (v0.3.x). The core workflow and dashboard are functional and actively running on multiple repos, but CLI tooling and several features are still in development.

What works today:

  • Daily traffic collection via GitHub Actions
  • Permanent history in Gist storage (beyond GitHub's 14-day window)
  • Cascading recency badges (installs, views, clones)
  • 5-tab dashboard with charts
  • setup-gists.py onboarding script
  • pip install github-traffic-tracker / pip install ghtraf
  • Structured verbosity (-v/-Q/--show) with 8 named output channels
  • ghtraf create --files-only — copy workflow + dashboard templates into your repo

In progress:

  • ghtraf CLI subcommands: status, list, verify (#6)
  • Schema migration tooling (ghtraf upgrade)

Known limitations:

  • CI clone subtraction uses heuristic formulas (empirical validation planned)
  • Dashboard is a single HTML file (JS modularization planned)

Contributing

Contributions are welcome! Please read our Contributing Guide for details.

Like the project?

"Buy Me A Coffee"

License

Github-Traffic-Tracker (ghtraf), Copyright (C) 2025 Dustin Darcy

This project is licensed under the GNU General Public License v3.0 — see LICENSE for details.

Metadata

Release files for github-traffic-tracker 0.3.11

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for github-traffic-tracker 0.3.11
File Size Uploaded Provenance
github_traffic_tracker-0.3.11.tar.gz 860.7 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for github-traffic-tracker 0.3.11
File Interpreter ABI Platform
github_traffic_tracker-0.3.11-py3-none-any.whl Python 3 none any Details

Total release size: 1.7 MB

Release files / github_traffic_tracker-0.3.11.tar.gz

Download URL github_traffic_tracker-0.3.11.tar.gz
Size 860.7 kB
Tags Source
SHA-256 checksum
How to use checksums
a7cd5a3e1555000f058b19433c0a22a891abeb17df10a377a392fd79510b6bb2
BLAKE2b-256 checksum
How to use checksums
b21e6ba87e0ae848c9ef6c0a1a8fb7a49f058bb81157d55b800c7f9a5033f966
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 24, 2026.

Transparency log

Release files / github_traffic_tracker-0.3.11-py3-none-any.whl

Download URL github_traffic_tracker-0.3.11-py3-none-any.whl
Size 832.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4c3c8c527a7849f81cf4c4a262ac5b303a6caddbee0826b5ce95558a17f664aa
BLAKE2b-256 checksum
How to use checksums
c67376420e2bda0c99141d83b0296e9a9cd7ef93dca4fe7438f775f71ac6d8d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 24, 2026.

Transparency log

Security for github-traffic-tracker 0.3.11

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for github_traffic_tracker-0.3.11.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 24, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page