Skip to main content

repovet

Check a GitHub repo for fake stars, abandonment, malware-style install scripts and typosquatting before you clone, install or depend on it. Also finds new repos that match your stack.

CI License: MIT Python 3.9+ Dependencies: none

Hundreds of new repos trend on GitHub every week. Some are great, some are abandoned, some have bought their stars, and a few are malware with a nice README. repovet is a small command-line GitHub repository trust scorer that tells you which is which in a few seconds.

  • repovet vet owner/repo gives a 0-100 trust score, a verdict, and the reasons.
  • repovet radar lists recently created repos for the languages and topics your project uses.
  • Pure Python standard library. No dependencies. Works on Windows, macOS and Linux.
  • Output as text or --json. Exit code for CI gating with --fail-under.

Quick start

pip install repovet-cli

The command is repovet. From source instead:

pip install git+https://github.com/shivamkr06/repovet.git
repovet vet psf/requests

Without installing, from a clone:

PYTHONPATH=src python -m repovet vet psf/requests

Example

$ repovet vet psf/requests

psf/requests  https://github.com/psf/requests
A simple, yet elegant, HTTP library.

LOOKS OK  100/100  [####################]

No red flags found.

Facts
  stars / forks / watchers   55k / 11k / 1.3k
  issues + PRs ever          7.6k
  age / last push            5749d / 8d ago
  license                    Apache-2.0
  contributors               100+
  top author                 nateprewitt (46% of recent commits)
  latest release             v2.34.2

A repo with problems looks like this:

CAUTION  78/100  [################----]

[MEDIUM] Stale
         No push in 514 days.
[LOW   ] Low fork-to-star ratio
         9 forks vs 503 stars (1.8%). Real projects usually sit around 5-15%.
[LOW   ] Single maintainer
         m-ahmed-elbeskeri wrote 100% of the recent commits. If they leave, the project stops.

What vet checks

Area Signals
Fake stars fork-to-star and watcher-to-star ratios, stars with almost no issues or PRs, sudden star spikes, share of brand-new or empty stargazer accounts (needs a token)
Maintenance archived or disabled, time since last push, commit count, project age
People single-maintainer risk, owner account age and track record
License missing, unrecognized, or restrictive (AGPL, SSPL, BUSL, non-commercial)
Install risk preinstall/postinstall hooks, setup.py that runs commands, curl | sh, encoded PowerShell, obfuscated exec, Discord/Telegram webhooks, hard-coded IPs, committed executables, password-protected archives mentioned in the README
Identity same name as a bigger, older repo (typosquat or copy), forks, lookalike repos

It also lists similar repos with the same topics so you can compare before choosing.

Scoring: start at 100, subtract 25 per high, 12 per medium, 5 per low finding. 80+ with no high findings is LOOKS OK, 55+ is CAUTION, below that is HIGH RISK.

Use it in CI

Block a risky dependency before it lands:

repovet vet owner/repo --fail-under 60

Exit code is 2 when the score is below the threshold, 1 on errors, 0 otherwise. --json prints the full report for scripts.

Radar: new repos for your stack

repovet radar

Reads package.json, requirements.txt, pyproject.toml, go.mod, Cargo.toml and others in the current folder, then lists recently created repos in those languages and topics. Same-name clones are collapsed into one entry, and repos are ranked by stars per day with a penalty for hollow-looking traction (many stars, almost no forks).

repovet radar --lang Rust --topic cli --days 30 --min-stars 200

GitHub token

Works without a token, but the anonymous API allows about 6 vets per hour and the stargazer checks (fake accounts, star spikes) are skipped, because GitHub does not list stargazers anonymously. To lift both limits, set GITHUB_TOKEN (or GH_TOKEN) to a token with no scopes. Some tokens (seen on new GitHub accounts) get no stargazer data back from GitHub; repovet then skips those two checks and says so in a note. If the gh CLI is installed and logged in, its token is used automatically.

Responses are cached for one hour in ~/.cache/repovet (--no-cache to bypass, REPOVET_CACHE to move it). The token is only ever sent to api.github.com.

Limits

These are heuristics. A flag is a reason to look closer, not proof of fraud, and a clean score is not a security audit. The install check reads a handful of entry-point files, not the whole codebase. Popular, legitimate projects can trip individual checks (a fast viral launch looks like a star spike). Treat the verdict as triage.

Development

python -m unittest discover -s tests

See CONTRIBUTING.md for how to add a check. Report security issues as described in SECURITY.md. Changes are listed in CHANGELOG.md.

License

MIT

Keywords: github repository analyzer, fake github stars detector, repo trust score, supply chain security, typosquatting detection, malicious repository checker, dependency vetting, trending repositories, open source discovery.

Metadata

Release files for repovet-cli 0.1.0

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

Source distribution (sdist)

Source distribution for repovet-cli 0.1.0
File Size Uploaded Provenance Actions
repovet_cli-0.1.0.tar.gz 25.1 kB With provenance Details for repovet_cli-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for repovet-cli 0.1.0
File Interpreter ABI Platform Actions
repovet_cli-0.1.0-py3-none-any.whl Python 3 none any Details for repovet_cli-0.1.0-py3-none-any.whl

Total release size: 47.1 kB

Release files / repovet_cli-0.1.0.tar.gz

Download URL repovet_cli-0.1.0.tar.gz
Size 25.1 kB
Tags Source
SHA-256 checksum
How to use checksums
9e494361e8c7cf5c6b58f20a655c7463ae77e481e848b265bb066fb854a14cd1
BLAKE2b-256 checksum
How to use checksums
07b0aaa3b0dc9494ac64847ca412ef41af82685a9c58c5ea715c6fd2ed67cfe6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 10, 2026.

Transparency log

Release files / repovet_cli-0.1.0-py3-none-any.whl

Download URL repovet_cli-0.1.0-py3-none-any.whl
Size 22.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a9d7f9e2e40f129b6d8e8c8a3bb197c6f91826b57f2813dfd3ddd74207c7c598
BLAKE2b-256 checksum
How to use checksums
66b1c4aecabfb07ec8797e61ea6e721ffcd61b4582259ba3a527f8e8d9a4cd30
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 10, 2026.

Transparency log

Security for repovet-cli 0.1.0

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

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for repovet_cli-0.1.0.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 Nov 10, 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.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

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