Skip to main content

Analyze GitHub repos into structured JSON. No AI, fully deterministic.

Project description

RepoCrunch

Analyze any public GitHub repository into structured JSON. No AI, no LLMs — fully deterministic.

Give it a repo, get back tech stack, dependencies, architecture, health metrics, and security signals in clean, consistent JSON. Use it as a Python library, CLI tool, REST API, or MCP server.

Quick Start

Requires Python 3.11+ and uv.

# Install
git clone https://github.com/kimwwk/repocrunch.git
cd repocrunch
uv venv && uv pip install -e ".[all]"

# Analyze a repo
repocrunch analyze astral-sh/uv --pretty

Or install just what you need:

uv pip install -e "."          # Library only (httpx + pydantic)
uv pip install -e ".[cli]"     # + CLI
uv pip install -e ".[api]"     # + REST API
uv pip install -e ".[mcp]"     # + MCP server
uv pip install -e ".[all]"     # Everything

Set a GitHub Token (optional)

Without a token you get 60 API calls/hour. With one, 5,000/hour.

export GITHUB_TOKEN=ghp_...

Usage

CLI

repocrunch analyze fastapi/fastapi --pretty          # Full analysis, pretty JSON
repocrunch analyze facebook/react -f tech_stack       # Single field
repocrunch analyze https://github.com/gin-gonic/gin   # Full URL works too
repocrunch serve                                       # Start REST API on :8000
repocrunch mcp                                         # Start MCP server (STDIO)

Python Library

from repocrunch import analyze, analyze_sync

# Async
result = await analyze("fastapi/fastapi")

# Sync
result = analyze_sync("pallets/flask")

print(result.summary.stars)
print(result.tech_stack.framework)
print(result.model_dump_json(indent=2))

REST API

repocrunch serve

# Then:
curl "http://localhost:8000/analyze?repo=fastapi/fastapi" | python -m json.tool
curl "http://localhost:8000/health"
curl "http://localhost:8000/docs"    # OpenAPI docs

MCP Server (for Claude, Cursor, etc.)

repocrunch mcp    # Starts STDIO transport

Sample Output

$ repocrunch analyze pallets/flask --pretty
{
  "schema_version": "1",
  "repo": "pallets/flask",
  "url": "https://github.com/pallets/flask",
  "analyzed_at": "2026-02-08T19:07:31Z",
  "summary": {
    "stars": 71143,
    "forks": 16697,
    "watchers": 2092,
    "last_commit": "2026-02-06T21:23:01Z",
    "age_days": 5787,
    "license": "BSD-3-Clause",
    "primary_language": "Python",
    "languages": { "Python": 99.9, "HTML": 0.1 }
  },
  "tech_stack": {
    "runtime": "Python",
    "framework": null,
    "package_manager": "pip",
    "dependencies": { "direct": 6, "dev": 0 },
    "key_deps": ["blinker", "click", "itsdangerous", "jinja2", "markupsafe", "werkzeug"]
  },
  "architecture": {
    "monorepo": false,
    "docker": false,
    "ci_cd": ["GitHub Actions"],
    "test_framework": "pytest",
    "has_tests": true
  },
  "health": {
    "open_issues": 2,
    "open_prs": 0,
    "contributors": 862,
    "commit_frequency": "daily",
    "maintenance_status": "actively_maintained"
  },
  "security": {
    "has_env_file": false,
    "dependabot_enabled": false,
    "branch_protection": false,
    "security_policy": false
  },
  "warnings": [
    "Branch protection status unknown (requires admin access or authenticated request)"
  ]
}

Supported Ecosystems

Language Manifest Files Package Manager Detection
JavaScript / TypeScript package.json npm, yarn, pnpm, bun (from lockfiles)
Python pyproject.toml, requirements.txt pip, poetry, uv, pdm, pipenv
Rust Cargo.toml cargo
Go go.mod go
Java / Kotlin pom.xml, build.gradle, build.gradle.kts maven, gradle
Ruby Gemfile bundler
C / C++ CMakeLists.txt cmake

Framework detection covers 40+ frameworks across all supported ecosystems (FastAPI, Django, React, Next.js, Spring Boot, Rails, Gin, Actix, and many more).

What It Detects

Category Signals
Summary Stars, forks, watchers, age, license, languages
Tech Stack Runtime, framework, package manager, direct/dev dependency count, key deps
Architecture Monorepo, Docker, CI/CD platform, test framework
Health Commit frequency (daily/weekly/monthly/sporadic/inactive), maintenance status, contributors, open issues
Security .env file committed, Dependabot enabled, branch protection, SECURITY.md present

Roadmap

Not yet implemented, but planned:

  • Secrets regex scanning — detect leaked API keys, tokens, passwords in the file tree
  • Architecture type classification — library vs. application vs. framework
  • API rate limiting — per-key throttling for the REST API
  • Private repo support — authenticated analysis of private repositories
  • npm/npx packagenpx repocrunch analyze owner/repo
  • Vulnerability scanning — known CVE detection in dependencies
  • Comparison mode — side-by-side analysis of multiple repos
  • Historical tracking — track how a repo's health changes over time
  • PyPI / npm publishingpip install repocrunch / npm install repocrunch
  • Platform deployments — Apify Store, Smithery, mcp.so, RapidAPI

License

MIT

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

repocrunch-0.1.1.tar.gz (113.2 kB view details)

Uploaded Source

Built Distribution

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

repocrunch-0.1.1-py3-none-any.whl (26.4 kB view details)

Uploaded Python 3

File details

Details for the file repocrunch-0.1.1.tar.gz.

File metadata

  • Download URL: repocrunch-0.1.1.tar.gz
  • Upload date:
  • Size: 113.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for repocrunch-0.1.1.tar.gz
Algorithm Hash digest
SHA256 e2bd6b30efb1cbfd2ab484b102fafd1ea3d00efe1a8ed4e9145edd963def8fcc
MD5 a1cc3b64325ea602cdaac55ad7023d14
BLAKE2b-256 8639f7ce81ea8ede3ed0951f36bafb3379ddc1b59850549f1ade74a469e52c56

See more details on using hashes here.

Provenance

The following attestation bundles were made for repocrunch-0.1.1.tar.gz:

Publisher: publish.yml on kimwwk/repocrunch

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file repocrunch-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: repocrunch-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 26.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for repocrunch-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 91c25870f8a5ce6cc146ae9ab0826474cf925a1a7370f88306ae3feb87f15b4d
MD5 a1e4b23f93ddf9a389d0522bb23bb4cf
BLAKE2b-256 9024d2c5743be52a39f458b6775854f1f72d7cf36623b43448e6743c8ad9ce30

See more details on using hashes here.

Provenance

The following attestation bundles were made for repocrunch-0.1.1-py3-none-any.whl:

Publisher: publish.yml on kimwwk/repocrunch

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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