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. The window above sets the range.

PyPI · Python 3,208npm · TypeScript 4,449
02505007501k08/1308/1808/2308/2809/0209/0709/11

Complete through 2026-09-11 · 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 · Pythonnpm · TypeScript
7d30dAllShare7d30dAllShare
Librariesseven libraries + the umbrella and alias packages1042,63762,69382%7064,07949,76592%
SDKthe governed agent loop604318,65913%202498,3856%
Dev toolingthe MCP docs server + the init scaffolder131402,0814%101212,6993%

Each share is a product's proportion of that registry's own traffic in the selected window — PyPI within PyPI, npm within npm (whole percents, so rounding can leave a column a point off 100). The two are never combined into one figure: PyPI's count excludes index mirrors and npm publishes no equivalent split, so a ratio spanning both would divide a filtered number by an unfiltered one. How these are counted →

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-09-11, 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 →

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