I run a scraper across 742 sources. Once a week it pulls package registry stats, and this week one ratio stopped me.
The numbers
Monthly PyPI downloads, pulled 2026-08-09:
| package | downloads/month | change |
|---|---|---|
| litellm | 710,000,000 | +16% |
| vllm | 5,290,000 | −11% |
That's 134 to 1, and the gap is widening from both ends.
I assumed it was a quirk of Python packaging until I checked npm, which is a different ecosystem with a different population of developers:
| package | downloads/week |
|---|---|
Vercel ai SDK |
20,400,000 |
| llamaindex | 127,000 |
160 to 1.
Two registries, two independent groups of people, the same answer: the world is calling models, not standing them up.
Why the ratio matters more than either number
Absolute download counts are close to meaningless. CI pulls dominate them — every pipeline that installs a dependency tree counts as a "download" no matter who or what triggered it. If I told you litellm did 710M installs, the correct response is "so does everything with a lot of transitive dependents."
The ratio survives that objection, because the same CI population pulls both packages. Whatever multiple CI adds, it adds to numerator and denominator alike.
That's the only reason I trust it. Any comparison between packages pulled by different populations — a ten-year-old logging library versus a one-year-old framework, say — is not a comparison at all.
The category next door is shrinking outright
Same window, vector database clients:
| package | change |
|---|---|
| weaviate-client | −27% |
| pinecone-client | −6% |
| qdrant-client | −4% |
| mcp | +10% (325M/month) |
Every client in the category decelerating in the same month, while the protocol layer climbs, is not a cycle. Cycles don't hit four competitors simultaneously and spare the thing next to them.
And one more, which I found more interesting than the vector DBs: instructor is down 6%. Its entire job was patching a model deficiency — coercing reliable structured output. When a model grows that capability natively, the middleware that faked it doesn't decline gracefully. It stops being installed.
What I'd do with this
If you're choosing where to spend a year of your life building: build where the 710 million is, not where the 5.29 million is. The durable layer right now is the one that routes, calls, and mediates — not the one that serves weights or stores vectors.
That's not a prediction about which technology is better. vLLM is excellent software. It's an observation about where the installs are going, which is a different question and usually a more useful one.
Check it yourself
curl -s https://pypistats.org/api/packages/litellm/recent
curl -s https://pypistats.org/api/packages/vllm/recent
curl -s "https://api.npmjs.org/downloads/point/last-week/ai"
Three commands, no auth, no key. The numbers were sitting in public the whole time — they just weren't news anywhere.
I only noticed because I have an instrument pointed at package registries every day, and it cost an afternoon to build. If you have a question about a market, the cheapest thing you can do is stop reading opinions about it and go measure it.
Top comments (0)