Adoption

Every package, both registries.

Every published Cendor package on PyPI and npm — the seven libraries, the SDK, and the dev tooling — recorded daily and broken down per package. How these are counted →

Downloads per day

Two registries, one scale. Hover for a day's numbers.

PyPI · Python 54,500npm · TypeScript 44,006
02.5k5k7.5k10k07/0107/0607/1107/1607/2107/28

Complete through 2026-07-28 · both registries publish a once-a-day aggregate roughly 24 hours behind. Recording began 2026-07-01.

By product

One brand, two doors — the libraries you plug in under your framework, and the SDK built on them. Dev tooling versions on its own cadence and is optional.

ProductPyPI · 30dPyPI · totalnpm · 30dnpm · totalShare
Libraries (opens in a new tab)seven libraries + the umbrella and alias packages46,55646,55635,10135,10183%
SDK (opens in a new tab)the governed agent loop6,2626,2626,7346,73413%
Dev tooling (opens in a new tab)the MCP docs server + the init scaffolder1,6821,6822,1712,1714%

"Share" is each product's proportion of all Cendor downloads — a relative weight, not a total.

Python — cendor-* on PyPI

Mirror-excluded unless a column says otherwise — "Raw" is the unfiltered count and "Mirrors" the share of it that came from index mirrors. Every row links to the package and to its own chart on pypistats.org (opens in a new tab).

TypeScript — @cendor/* on npm

npm publishes one number per package — the same basis npmjs.com (opens in a new tab) shows on every package page.

How these are counted

Sources

PyPI figures come from pypistats.org (opens in a new tab), which reports PyPI's own CDN logs split into with_mirrors and without_mirrors; we show the mirrors-excluded number. npm figures come from api.npmjs.org/downloads (opens in a new tab), the same source behind the weekly count on every npmjs.com (opens in a new tab) package page. npm offers no equivalent split, so the two registries are reported side by side rather than combined. Both APIs are public and unauthenticated — anyone can reproduce every number on this page.

Recorded, not fetched live

A job appends each new day to a committed ledger in this site's repository, so the history is auditable in git. This is not an optimisation: pypistats keeps a rolling 181 days and then drops the oldest day permanently, and PyPI publishes no lifetime total — a day not recorded is gone. Nothing is fetched when you load this page, and no request leaves your browser.

Windows

Every window ends on 2026-07-28, the last day complete in both registries, so the Python and TypeScript columns always cover identical calendar days. "30d" is the 30 days ending there; "7d" the 7 days ending there.

Cendor Monitor

The optional self-hosted container is ghcr.io/cendorhq/cendor-monitor. GitHub publishes no pull count for container packages, so there is no figure to report and we do not estimate one. What the monitor is → (opens in a new tab)

Ledger last refreshed 2026-07-29. Versions shown are the published releases from /releases (opens in a new tab); the machine-readable feed is /releases.json (opens in a new tab).