Surface GitHub repos gaining traction fast, before they hit the front page.
Project description
gh-momentum
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0e2d909a6e8c446b2312e6f88687c0749040f42f598fb77160d2a8d81067136d
|
|
| MD5 |
65d3c196c703b9c5a0cd86c54655b945
|
|
| BLAKE2b-256 |
03e2e167d43b97dab6454f482548792fc40792b65b06ac98a79a63df686f2b5a
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6ea4dc929e729d1f3f9506580c88c4ce9c0cdb780796e8fcb4c45e864eb45742
|
|
| MD5 |
808d38af9b45acf1e9bdb792ac7ef9c6
|
|
| BLAKE2b-256 |
ce8831ee9737460aa26e049c0055958c7efc5f47c06067fc1f2123f328c3ace9
|