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

@routerlab/core

v1.0.0

Published

Routing engine for cost-quality LLM model selection.

Readme

@routerlab/core

The routing engine for routerlab — cost-quality routing for LLM APIs with open Pareto frontiers per task class.

@routerlab/core picks the cheapest LLM model that meets a quality bar (and any caller-supplied budget / latency caps) for a given task. Cost is grounded in atlas-calibrated empirical token economics rather than chars/4 proxies, and quality is predicted from a published per-task prior (or measured eval data when available).

This is the library; the @routerlab/cli package wraps it as the route command.

Install

bun add @routerlab/core
# or
npm install @routerlab/core

Quick API

import { route, predictQuality, estimateCost } from "@routerlab/core";

const decision = await route({
  task: "qa",
  prompt: "What's the capital of France?",
  qualityBar: 0.85,
  maxCostUsd: 0.005,      // optional hard budget cap
  maxLatencyMs: 2000,     // optional hard latency cap
});

console.log(decision.chosen?.model.model);
// e.g. "claude-sonnet-4-6"

for (const fb of decision.fallback) console.log("fallback:", fb.model.model);
for (const sk of decision.skipped)  console.log("skipped:",  sk.model.model, sk.reason);

RouteDecision shape

type RouteDecision = {
  chosen: RoutePick | null;     // null when no candidate passes the filters
  fallback: RouteFallback[];    // ordered cheapest-next
  skipped: RouteSkipped[];      // every dropped candidate, with a reason
  request: RouteRequest;        // echoed
};

See types.ts for the full shape. RoutePick carries expectedCost, expectedQuality, reasoning, and the underlying ModelCandidate.

What's in here

  • route(req) — top-level routing entry point.
  • predictQuality / predictQualityWithCI — quality predictor; serves measured eval data when present, falls back to the seeded prior table (Wilson 95% CI exposed via the WithCI variant).
  • estimateCost / estimateCostBatch — atlas-calibrated cost estimation. This is the load-bearing differentiation versus prior open routers: token counts come from offline counters scaled by per-provider empirical correction factors from llm-tokens-atlas, not a chars/4 proxy.
  • getDefaultCandidates() — current candidate pool.
  • TypesModelCandidate, RouteRequest, RouteDecision, TaskClass, Provider, etc.

Environment overrides

| Variable | Effect | | --------------------------------- | --------------------------------------------------------------------- | | ROUTERLAB_ATLAS_RESULTS_PATH | Atlas calibration file path (read by cost.ts) | | ROUTERLAB_QUALITY_TABLE_PATH | Measured quality table path (read by quality_predictor.ts) |

When unset, the engine falls back to seeded defaults shipped in the package.

Links

License

Apache-2.0. See LICENSE.