Skip to main content

Surface GitHub repos gaining traction fast, before they hit the front page.

Project description

gh-momentum

CI License: MIT Python Dependencies

Surface GitHub repos gaining traction fast — before they hit the front page.

gh-momentum queries the GitHub Search API for newly-created repositories and ranks them by momentum (stars per day), not by total stars. A repo with 800 stars that's 6 days old is a stronger signal than one with 40,000 stars that's 8 years old. This tool finds the former.

Zero dependencies. Pure Python standard library. One file of logic, one CLI.

$ gh-momentum --days 7 --min-velocity 50

   9.1/10  acme/turbo-agent  (1240*, 177.1/day, Python)
          A minimal autonomous agent runtime that fits in 500 lines.
          https://github.com/acme/turbo-agent

   7.4/10  data-co/ducklake  (612*, 87.4/day, Rust)
          Embedded analytics database with a Postgres wire protocol.
          https://github.com/data-co/ducklake

Why

Star count is a lagging indicator. By the time a repo has 20k stars, the opportunity to be early — to contribute, to build on top of it, to write the first tutorial — is mostly gone. Star velocity is a leading indicator. gh-momentum ranks by velocity so you see things while they're still small.

Install

pip install gh-momentum

Or from source:

git clone https://github.com/Dheightsan/gh-momentum
cd gh-momentum
pip install -e .

Usage

# Repos created in the last 7 days, gaining at least 50 stars/day
gh-momentum --days 7 --min-velocity 50

# Also pull in repos tagged with specific GitHub topics
gh-momentum --topic llm --topic rust

# Boost repos that match keywords you care about
gh-momentum --match "python,fastapi,cli"

# Machine-readable output
gh-momentum --json | jq '.[] | .name'

Rate limits

The GitHub Search API allows 60 requests/hour unauthenticated. Set a token to raise that to 5,000/hour:

export GITHUB_TOKEN=ghp_your_token_here
gh-momentum
# or: gh-momentum --token ghp_your_token_here

A token with no scopes at all is enough — gh-momentum only reads public data.

Use as a library

from gh_momentum import find_momentum

for repo in find_momentum(days_back=7, min_velocity=50, match=["llm"]):
    print(repo.score, repo.name, repo.star_velocity_per_day)

find_momentum() returns a list of MomentumRepo dataclasses, sorted by score.

MCP server

gh-momentum ships an optional Model Context Protocol server, so AI agents can query GitHub momentum as a tool.

pip install "gh-momentum[mcp]"
gh-momentum-mcp          # runs over stdio, for MCP clients

It exposes one tool, find_trending_repos, with the same parameters as the CLI. Point any MCP-compatible client at the gh-momentum-mcp command. The core CLI and library stay dependency-free — only the MCP server pulls in mcp.

How the score works

The 0-10 score combines three signals:

Signal Weight
Star velocity Primary. stars/day, saturates near 8.0
Absolute stars Small confidence bonus (up to +1.0)
Keyword match Optional boost when --match keywords hit (up to +1.5)

The scoring lives in one function — _score() in gh_momentum/detector.py — so it's easy to read, fork, and tune to your own taste.

Development

pip install -e ".[dev]"
pytest -q

Tests run fully offline. The one network test is opt-in:

REPO_RADAR_LIVE_TEST=1 pytest -q

Contributing

Issues and PRs welcome. This is maintained on a best-effort basis — if you need a feature, a PR is the fastest path. Keep the zero-dependency rule intact.

License

MIT — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gh_momentum-0.1.0.tar.gz (11.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gh_momentum-0.1.0-py3-none-any.whl (10.7 kB view details)

Uploaded Python 3

File details

Details for the file gh_momentum-0.1.0.tar.gz.

File metadata

  • Download URL: gh_momentum-0.1.0.tar.gz
  • Upload date:
  • Size: 11.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for gh_momentum-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0e2d909a6e8c446b2312e6f88687c0749040f42f598fb77160d2a8d81067136d
MD5 65d3c196c703b9c5a0cd86c54655b945
BLAKE2b-256 03e2e167d43b97dab6454f482548792fc40792b65b06ac98a79a63df686f2b5a

See more details on using hashes here.

File details

Details for the file gh_momentum-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: gh_momentum-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 10.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for gh_momentum-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6ea4dc929e729d1f3f9506580c88c4ce9c0cdb780796e8fcb4c45e864eb45742
MD5 808d38af9b45acf1e9bdb792ac7ef9c6
BLAKE2b-256 ce8831ee9737460aa26e049c0055958c7efc5f47c06067fc1f2123f328c3ace9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page