Observed since 20 Oct, 19:46 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
adoptrank
Repository discovery and token-budgeted code context for coding agents
AdoptRank finds open-source repositories that fit the project you are actually building and exposes a live adoption leaderboard backed by real GitHub and PyPI observations.
pipx install adoptrank
Python 3.11–3.14 is supported for the CLI. The optional model-serving stack uses Python 3.12 in production.
Run the command inside a local project:
adoptrank find "a streaming anomaly detector that fits this codebase"
The scanner sends only a bounded structured summary of languages, dependencies, frameworks, and symbols. It skips ignored paths, build/dependency directories, known credential files, and files matching secret patterns. Inspect the exact payload without sending it with:
adoptrank find "your query" --dry-run
adoptrank leaderboard --language Python --sort momentum
adoptrank leaderboard --owner openai --window 7
Results contain simple direct GitHub links. The hosted Vercel proxy supplies the private model-service credential, so CLI users do not need an AdoptRank API key.
Build a task-specific evidence pack from safe local source excerpts and ranked GitHub repositories:
adoptrank context "add idempotent Stripe webhook retries" --budget 8000
Use --json for integrations and --no-external for a fully local retrieval
run. Token counts are portable estimates until provider-reported telemetry is
integrated; the project does not yet claim measured Claude token savings.
# Inspect the bounded context without invoking Claude.
adoptrank claude "Add idempotent payment retries" --path . --budget 8000 --dry-run
# Start Claude Code with the context pack.
adoptrank claude "Add idempotent payment retries" --path . --budget 8000
The launcher writes only redacted metadata—context hash, selected paths, budget,
and exit status—to .adoptrank/claude-runs/. --print also records provider
usage and later file-read paths/tool-call counts, never source or tool output.
Web application: https://adoptrank.vercel.app
Source and documentation: https://github.com/Kairavparikh/adoptrank
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
httpxEnvironment{
"extras": "",
"marker": null,
"requires_python": "<3.15,>=3.11",
"evaluation": "NOT_EVALUATED"
} | httpx==0.28.1 | runtime |
pydanticEnvironment{
"extras": "",
"marker": null,
"requires_python": "<3.15,>=3.11",
"evaluation": "NOT_EVALUATED"
} | pydantic==2.12.5 | runtime |
pydantic-settingsEnvironment{
"extras": "",
"marker": null,
"requires_python": "<3.15,>=3.11",
"evaluation": "NOT_EVALUATED"
} | pydantic-settings==2.12.0 | runtime |
tree-sitterEnvironment{
"extras": "",
"marker": null,
"requires_python": "<3.15,>=3.11",
"evaluation": "NOT_EVALUATED"
} | tree-sitter<0.27,>=0.25.2 | runtime |
tree-sitter-language-packEnvironment{
"extras": "",
"marker": null,
"requires_python": "<3.15,>=3.11",
"evaluation": "NOT_EVALUATED"
} | tree-sitter-language-pack<2,>=0.11.0 | runtime |
pathspecEnvironment{
"extras": "",
"marker": null,
"requires_python": "<3.15,>=3.11",
"evaluation": "NOT_EVALUATED"
} | pathspec<1,>=0.12.1 | runtime |
asyncpgEnvironment{
"extras": "",
"marker": "extra == \"ops\"",
"requires_python": "<3.15,>=3.11",
"evaluation": "NOT_EVALUATED"
} | asyncpg==0.30.0; extra == "ops" | runtime |
fastapiEnvironment{
"extras": "",
"marker": "extra == \"ml\"",
"requires_python": "<3.15,>=3.11",
"evaluation": "NOT_EVALUATED"
} | fastapi==0.128.3; extra == "ml" | runtime |
numpyEnvironment{
"extras": "",
"marker": "extra == \"ml\"",
"requires_python": "<3.15,>=3.11",
"evaluation": "NOT_EVALUATED"
} | numpy==2.2.6; extra == "ml" | runtime |
sentence-transformersEnvironment{
"extras": "",
"marker": "extra == \"ml\"",
"requires_python": "<3.15,>=3.11",
"evaluation": "NOT_EVALUATED"
} | sentence-transformers<6,>=5.1.0; extra == "ml" | runtime |
torchEnvironment{
"extras": "",
"marker": "extra == \"ml\"",
"requires_python": "<3.15,>=3.11",
"evaluation": "NOT_EVALUATED"
} | torch==2.7.1; extra == "ml" | runtime |
uvicornEnvironment{
"extras": "standard",
"marker": "extra == \"ml\"",
"requires_python": "<3.15,>=3.11",
"evaluation": "NOT_EVALUATED"
} | uvicorn[standard]==0.40.0; extra == "ml" | runtime |
asyncpgEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": "<3.15,>=3.11",
"evaluation": "NOT_EVALUATED"
} | asyncpg==0.30.0; extra == "dev" | runtime |
pytestEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": "<3.15,>=3.11",
"evaluation": "NOT_EVALUATED"
} | pytest==8.4.2; extra == "dev" | runtime |
ruffEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": "<3.15,>=3.11",
"evaluation": "NOT_EVALUATED"
} | ruff==0.13.3; extra == "dev" | runtime |
bdist_wheel · 65.4 KB · Python py3
sdist · 62 KB · Python source
Observed since 20 Oct, 19:46 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:2dbb3ca6d8253b4624bd54f1f192c2bdc643fad4d67784af2d1926fc8686065d