← back to gallery

Agent SDK Pulse

Live health dashboard ranking 21 AI agent frameworks by real velocity

dev-toolsai-agentsframeworksleaderboarddeveloper-toolsopen-sourcehealth-dashboard
Open product ↗

agent-sdk-pulse

Live health and velocity dashboard for AI agent frameworks — the
"is this framework alive, growing, or dying?" question, answered every
30 minutes from real public data.

What it shows

21 frameworks shipped at launch: LangChain (py + js), LangGraph
(py + js), LlamaIndex (py + ts), CrewAI, AutoGen, PyAutoGen, OpenAI
Agents SDK (py + js), Pydantic AI, Mastra, Agno, Letta, smolagents,
Swarm, DSPy, Atomic Agents, mcp-agent, Google ADK.

Data sources (real, public, no mock)

Every cell on the dashboard comes from a live HTTP fetch — no seeds,
no fake data, no Math.random jitter.

| Source | Endpoint | What we read | Refresh |
|---|---|---|---|
| GitHub REST | https://api.github.com/repos/:owner/:repo | stars, forks, open_issues, pushed_at, archived, license | every 30 min (waved) |
| GitHub REST | https://api.github.com/repos/:owner/:repo/stats/participation | last 4 weeks of commits | every 30 min (waved) |
| GitHub REST | https://api.github.com/repos/:owner/:repo/releases?per_page=100 | latest tag, releases-in-last-90-days | every 30 min (waved) |
| npm registry | https://api.npmjs.org/downloads/range/last-week/{pkg} | weekly downloads | every 30 min (waved) |
| pypistats.org | https://pypistats.org/api/packages/{pkg}/recent | last_day, last_week, last_month downloads | every 30 min (waved) |

Anonymous GitHub API gives 60 req/hr per IP. We refresh in waves of 5
frameworks per 30-minute tick, so a full sweep takes ~4 ticks (≤2h),
keeping data ≤2h fresh while staying well below rate limits. If you
set GITHUB_TOKEN in your environment we use 5,000 req/hr instead.

Pulse score (0–100)

| Component | Weight | Source |
|---|---|---|
| Commit velocity (4-week sum, log-scaled) | 30% | GitHub /stats/participation |
| Recency of last push (exp decay, half-life ~30d) | 15% | GitHub repo pushed_at |
| Weekly download volume (max(npm, pypi), log-scaled) | 20% | npm + pypistats |
| Week-over-week download delta (log-mapped around 1.0×) | 15% | npm + pypistats |
| Release cadence (count in last 90d, capped at 6) | 10% | GitHub /releases |
| Issue health (open_issues / forks ratio, inverted) | 10% | GitHub repo |

Hard rules:
- archived: true on GitHub → score forced to 0 ("dormant").
- pushed_at older than 180 days → score capped at 25 ("stale").

The full formula lives in score.js.

No authentication

Every endpoint on this service is public. There is no login page,
no ADMIN_PASS, no Basic Auth, no API key required. This is
deliberate so anyone (including an automated showcase preview) can
inspect the dashboard instantly.

Endpoints

Run locally

git clone <this repo>
cd agent-sdk-pulse
cp .env.example .env
npm install
npm start
# → http://localhost:4733/agent-sdk-pulse/

Defaults: SQLite db at ./data/pulse.db, port 4733, base path
/agent-sdk-pulse. Override any of these via .env.

Stack

Node.js 20+ · Express · better-sqlite3 (WAL) · node-cron · helmet ·
compression · vanilla JS SPA · Chart.js from CDN.

Adding a framework

Edit data/seed.json, append an entry, restart the
server. The framework will be picked up by the next wave.

License

MIT.