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

ghcr-cleanup-manager-visualizer

v1.1.6

Published

Inspect GHCR Cleanup Manager SQLite scan databases in a local browser graph visualizer.

Readme

GHCR Cleanup Manager Visualizer

Local browser visualizer for GHCR Cleanup Manager SQLite scan databases.

Use it to inspect manifest graphs, compare two scans of the same package, and investigate cleanup edge cases.

Example compare view: red-bordered manifests are present in the older scan and removed in the newer one.

Example compare view: red-bordered manifests are present in the older scan and removed in the newer one.

Quick Demo

Download the test scenario DB from the latest release and try the visualizer without first running your own workflow.

The DB contains dozens of scenario packages with different graphs and before/after views of cleanup operations on them.

curl -LO https://github.com/ghcr-manager/ghcr-cleanup-manager/releases/latest/download/ghcr-cleanup-manager-release-scenarios.sqlite
npx ghcr-cleanup-manager-visualizer --db ./ghcr-cleanup-manager-release-scenarios.sqlite

Or run the release image:

docker run --rm -p 8080:8080 \
  -v "$PWD:/data:ro" \
  ghcr.io/ghcr-manager/ghcr-cleanup-manager-visualizer:latest \
  --db /data/ghcr-cleanup-manager-release-scenarios.sqlite

Open the local URL printed by the command and select:

  • owner: ghcr-cleanup-manager-test
  • package: select one with 2images or 2multiarch in the name
  • tag search: image or multiarch

Good search terms for tags in most scenarios are: image, multiarch, keep, or delete.

For an overview of the test scenario graphs and cleanup cases, see test-scenarios.

Install

npm install --global ghcr-cleanup-manager-visualizer

Requirement: Node.js 24 or newer.

Run

ghcr-cleanup-manager-visualizer --db ./artifacts/acme__demo.sqlite

The command prints a local URL such as http://127.0.0.1:43217. Open that URL in your browser.

Optional flags:

  • --host <host>: override the bind host. Default: 127.0.0.1
  • --port <port>: override the bind port. Default: 0

Example:

ghcr-cleanup-manager-visualizer --db ./artifacts/acme__demo.sqlite --host 0.0.0.0 --port 4000

Docker

Release images are published only from release tags and use these tags:

  • vX.Y.Z
  • vX
  • latest

Example:

docker run --rm -p 8080:8080 \
  -v "$PWD:/data:ro" \
  ghcr.io/ghcr-manager/ghcr-cleanup-manager-visualizer:v1.1.6 \
  --db /data/acme__demo.sqlite

Container defaults:

  • host: 0.0.0.0
  • port: 8080

DB Input

The visualizer reads the SQLite DB produced by GHCR Cleanup Manager as GitHub Action artifacts uploaded by scan, cleanup.

Typical flow:

  1. Run a scan or cleanup workflow and download the SQLite DB run artifact.
  2. Start ghcr-cleanup-manager-visualizer with that DB.
  3. Select owner and package, then enter a tag or digest to center the graph.
  4. Optionally select a second scan to compare two recorded scans.

Compare Mode

When a package has at least two completed scans, the visualizer defaults to comparing the newest two scans:

  • main scan: the older of the newest two scans
  • compare scan: the newest scan

In compare mode, the visualizer shows delta information in two places.

Manifest nodes:

  • gray border: present in both scans
  • green border: added in the newer scan
  • red border: removed in the newer scan

Tags in the details panel:

  • plain tag text: present in both scans
  • (+) tag-name: tag added in the newer scan
  • (-) tag-name: tag removed in the newer scan

This is the fastest way to inspect what changed between two scans of one package graph.

Visualizer Show Compare Mode

Example compare view: red-bordered manifests are present in the older scan and removed in the newer one.

Visualizer Show Compare Mode Tags

Example compare view: tags with '(-)' were removed. Here the manifest with the other tag remained.

Source Checkout

From this repository checkout, you can run the visualizer without publishing:

npm run build
npm run visualize -- --db ./artifacts/acme__demo.sqlite

Project

Main project and issue tracker: