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

@lucasschirm/devinp

v0.1.5

Published

Pretty pricing table for Devin models, powered by `devin models list`

Readme

devinp

Pretty pricing table for Devin models — reads live prices from devin models list, joins BenchLM coding scores, and renders a sorted table in your terminal or a web page.

Thinking-effort variants that share a price (low, medium, high, xhigh, max, …) are collapsed into one row, so you see one row per price tier — e.g. Claude Opus 5 and Claude Opus 5 Fast instead of ten near-identical rows.

Install

npm i -g @lucasschirm/devinp

The package ships as a self-contained bundle — no dependencies are installed.

Requirements

  • Node.js ≥ 18
  • The devin CLI installed and signed in — prices come from your account via devin models list --format json. If devin is missing or not authenticated, devinp exits with an error (use --source for a saved snapshot).

When devin fails or truncates

  • Prices are captured through a temp file in os.tmpdir() — devin's interactive CLI can truncate a pipe stream mid-write, so devinp points devin's stdout at a real file instead. The temp file is always removed after the run.
  • If devin's output is cut off mid-stream, devinp repairs the document, prints a warning, and renders the partial table.
  • If the output cannot be recovered, devinp reports a diagnostic with the size and tail of what devin wrote, and suggests re-running or saving the output manually: devin models list --format json > models.json, then devinp --source models.json.

Usage

devinp                       # table sorted by best value (Bench % ÷ output price)
devinp -o=input              # cheapest input price first
devinp -o=cached             # cheapest cached-input price first
devinp -o=output             # cheapest output price first
devinp -o=bench              # highest BenchLM coding score first
devinp -o=value              # default: best Bench score per output dollar

devinp -g=family             # section the table by model family
devinp -g=price              # section by identical price tier
devinp -g=size               # section by context window size

devinp --web                 # serve an interactive page on http://127.0.0.1:4321
devinp --web --port 8080     # pick a port

devinp --source models.json  # read a saved `devin models list --format json`
devinp --json                # emit normalized rows as JSON

Reading the table

│  # │ Model           │   Ctx │ Input │ Cached │ Output │ Bench % │ Value │ Sidekick i/c/o │
│  1 │ Gemini 3.8 Flash│ 1.05M │ $0.75 │  $0.08 │  $3.75 │  64.1%  │ 17.10 │ —              │
  • Prices are USD per 1M tokens; columns are heat-colored green → red.
  • Value = Bench % ÷ output $/1M — the score you buy per output dollar. Free models always show ∞ and sort first under -o=bench / -o=value, even without a Bench score. Paid models without a score show — and sort last.
  • Markers: β = beta, ● = new, magenta name = free. Sidekick shows the partner-model pricing for Fusion rows.
  • Colors disable automatically when piping; NO_COLOR / FORCE_COLOR are respected.

BenchLM scores

Scores live in data/benchlm-scores.json and ship with the package. To refresh them (maintainers, manual — not automated):

npm run update-benchlm

This fetches the BenchLM leaderboard API (api/data/leaderboard?category=coding&limit=200 — the limit is raised from the default 50 so the long tail of the board is included) and writes data/benchlm-scores.json. Model names are matched to Devin family slugs order-insensitively; names that still don't map are reported under unmatched — add entries to MANUAL_MAP in scripts/update-benchlm.js to fix them.

Development

npm install     # installs dev deps (esbuild, oclif, fastify, ansis)
npm run build   # bundle src/ → bin/run.js + bin/command.js (self-contained)
npm run dev     # build + run
npm test        # node --test against sample/models.json

bin/ is generated and gitignored; prepare/prepack build it automatically so npm publish, git-URL installs, and npm link always ship a fresh bundle.

Publishing

.github/workflows/publish.yml bumps the patch version and publishes with npm trusted publishing (OIDC — no NPM_TOKEN). Requires the trusted publisher to be configured on npmjs.com: repository lucasschirm/devinp, workflow publish.yml.

License

MIT