npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

ai-heatmap

v1.17.12

Published

AI usage cost heatmap powered by ccusage + react-activity-calendar

Downloads

5,033

Readme

AI Heatmap

npm version License: MIT GitHub Stars Node.js TypeScript React

GitHub-style heatmap for your AI usage costs. Powered by ccusage + react-activity-calendar.

Quick Start

curl -sS https://webi.sh/node | sh  # Node.js (includes npx)
curl -sS https://webi.sh/gh | sh    # GitHub CLI
gh auth login
# npx --yes ai-heatmap@latest delete
npx --yes clear-npx-cache && npx --yes ai-heatmap@latest init

USER=$(gh api user -q .login)
open "https://${USER}.github.io/${USER}-ai-heatmap/heatmap.svg"
npx --yes clear-npx-cache && npx --yes ai-heatmap@latest deploy

USER=$(gh api user -q .login)
open "https://${USER}-ai-heatmap.vercel.app/api/heatmap?colorScheme=dark"

Preview

AI Heatmap

Variations

<!-- Dark mode with full stats -->
![](https://{user}-ai-heatmap.vercel.app/api/heatmap?colorScheme=dark)

<!-- Blue theme, heatmap + stats only -->
![](https://{user}-ai-heatmap.vercel.app/api/heatmap?theme=blue&weekday=false)

<!-- Heatmap only (clean embed) -->
![](https://{user}-ai-heatmap.vercel.app/api/heatmap?stats=false&weekday=false)

<!-- Custom date range -->
![](https://{user}-ai-heatmap.vercel.app/api/heatmap?start=2026-01-01&end=2026-02-18)

SVG API (Vercel Only)

Deploy this repo to Vercel for a dynamic SVG endpoint. This is Vercel-only — GitHub Pages does not support serverless API routes.

Embed it in any README:

![AI Heatmap](https://{user}}-ai-heatmap.vercel.app/api/heatmap)

The SVG is generated on each request from public/data.json, so you can control the output with query parameters.

SVG API Options

| Parameter | Default | Description | |-----------|---------|-------------| | colorScheme | light | Color scheme: light, dark | | theme | same as colorScheme | Theme override: light, dark, blue, orange, pink | | blockSize | 16 | Size of each day block in pixels | | blockMargin | 4 | Gap between blocks in pixels | | blockRadius | 3 | Border radius of blocks in pixels | | bg | auto | Background color (e.g. %23ffffff). Auto: transparent (light) / #0d1117 (dark) | | textColor | auto | Text color. Auto: #24292f (light) / #c9d1d9 (dark) | | start | - | Filter start date (YYYY-MM-DD) | | end | - | Filter end date (YYYY-MM-DD) | | stats | true | Show stats section (daily avg, weekly avg, peak, active days) | | weekday | true | Show average-by-weekday bar chart |

SVG API Examples

# Default light theme with all sections
/api/heatmap

# Dark theme
/api/heatmap?colorScheme=dark

# Pink theme, heatmap only
/api/heatmap?theme=pink&stats=false&weekday=false

# Custom block size
/api/heatmap?blockSize=12&blockMargin=3&blockRadius=2

# Date range filter
/api/heatmap?start=2026-01-01&end=2026-02-18

GitHub Pages (Interactive + Static SVG)

The interactive version with tooltips is deployed via GitHub Pages. Tooltips show cost, tokens, cache hit rate, and per-model breakdown.

A static SVG (heatmap.svg) is also generated during build. You can embed it as an image:

![AI Heatmap](https://{user}.github.io/{user}-ai-heatmap/heatmap.svg)

Static SVG is pre-generated at build time. For real-time rendering, use the Vercel SVG API.

GitHub Pages Options

All options are controlled via query string:

https://{user}.github.io/{user}-ai-heatmap/?colorScheme=dark&blockSize=14

| Parameter | Default | Description | |-----------|---------|-------------| | colorScheme | light | Color scheme: light, dark | | blockSize | 12 | Size of each day block in pixels | | blockMargin | 3 | Gap between blocks in pixels | | blockRadius | 2 | Border radius of blocks in pixels | | fontSize | 12 | Font size in pixels | | hideColorLegend | false | Hide the color legend | | hideMonthLabels | false | Hide month labels | | hideTotalCount | false | Hide total count label | | showWeekdayLabels | true | Show weekday labels (Mon, Wed, Fri) | | weekStart | 0 | First day of week (0 = Sunday, 1 = Monday) | | start | - | Filter start date (YYYY-MM-DD) | | end | - | Filter end date (YYYY-MM-DD) |

Available Themes (SVG API)

| Theme | Colors | |-------|--------| | light | #ebedf0 #c6e48b #7bc96f #239a3b #196127 | | dark | #161b22 #0e4429 #006d32 #26a641 #39d353 | | blue | #ebedf0 #c0ddf9 #73b3f3 #3886e1 #1b4f91 | | orange | #ebedf0 #ffdf80 #ffa742 #e87d2f #ac5219 | | pink | #ebedf0 #ffc0cb #ff69b4 #ff1493 #c71585 |

Configuration

https://{user}.github.io/{user}-ai-heatmap/heatmap.svg

Customize the static SVG output by editing heatmap.config.json in the project root:

{
  "colorScheme": "dark",
  "theme": "",
  "blockSize": 16,
  "blockMargin": 4,
  "blockRadius": 3,
  "bg": "",
  "textColor": "",
  "start": "",
  "end": "",
  "stats": true,
  "weekday": true
}

This config is used by npm run generate:svg to build public/heatmap.svg. Empty strings ("") use auto defaults.

For the Vercel dynamic API, use query parameters instead (they override config).

Data Update

ccusage reads Claude Code usage logs from your local machine, so data must be generated locally and pushed to the repo.

npx ai-heatmap update

For automated updates, use a local cron job or macOS LaunchAgent:

CLAUDE_CODE_OAUTH_TOKEN=sk-ant-xxx
GH_TOKEN=ghp_xxx

0 0 * * * npx --yes clear-npx-cache && npx --yes ai-heatmap@latest update

npx: not found? cron uses a minimal PATH. Fix with:

# Find npx path
which npx   # e.g. /home/user/.local/bin/npx

# Use full path in cron
0 0 * * * PATH=$HOME/.local/bin:$PATH npx --yes clear-npx-cache && PATH=$HOME/.local/bin:$PATH npx --yes ai-heatmap@latest update

Upgrade

To use the latest version of ai-heatmap:

npx --yes clear-npx-cache && npx --yes ai-heatmap@latest update

Still running an old version? npx caches packages locally. If the update command behaves unexpectedly after a release, clear the cache:

npx --yes clear-npx-cache
npx --yes ai-heatmap@latest update

Deployment

npm publish

GitHub Pages

  1. Enable GitHub Pages (Settings > Pages > Source: GitHub Actions)
  2. Push data.json to main to trigger the first deploy
  3. Manual deploy: Actions tab > "Deploy AI Heatmap" > "Run workflow"

Vercel (SVG API)

npx --yes clear-npx-cache && npx --yes ai-heatmap@latest deploy

Or manually:

  1. Import this repo on vercel.com
  2. Deploy (zero config — vercel.json included)
  3. Make public: Project Settings > Deployment Protection > Vercel Authentication > OFF
  4. Use the deployed URL for dynamic SVG embeds

Star History

Star History Chart

Sponsor

If this project helps you, consider supporting it:

GitHub Sponsors

License

MIT License - see LICENSE file for details

Copyright (c) 2026 seunggabi

Author

seunggabi


Made with ❤️ using React, TypeScript, and Vite