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

@pie-lab/router

v0.2.1

Published

Model routing and fallback policy for pie-lab

Downloads

1,283

Readme

@pie-lab/router

Router package for model selection, fallback, account selection, quota policy, and routing attempts.

In 9router-derived routing language, "account" means a provider credential connection, not a pie-lab user signup account. Prefer provider connection and connectionId in new pie-lab code and docs.

Source direction:

  • Routing, fallback, account, quota, and RTK ideas come from https://github.com/jikime/9router.
  • Actual provider calls should use the existing pi provider/runtime stack.
  • Usage records must be stored through @pie-lab/storage.

Current implemented scope:

  • Parse fixed:..., fallback:..., auto:..., cheap:..., fast:..., combo:...
  • Resolve provider/model strings into resolvedProvider and resolvedModel
  • Resolve pi Model objects through a PiModelCatalog
  • Build ordered route plans through resolvePiModelRoutePlan()
  • Expand combo:* aliases and structured primary + fallback[] selections into route candidates
  • Build default top-candidate route plans for combo:* aliases when no policy is supplied
  • Expand 9router-style named combos from policy data, e.g. premium-coding
  • Apply 9router-style combo strategy: fallback or round-robin
  • Apply 9router-style sticky round-robin limits for combos
  • Provide account fallback/cooldown helpers ported from 9router:
    • checkFallbackError()
    • getQuotaCooldown()
    • filterAvailableAccounts()
    • isModelLockActive()
    • model lock helpers such as modelLock_${model}
    • provider reset-time cooldown extraction through extractProviderResetCooldownMs()
  • Provide account selection helper based on 9router getProviderCredentials():
    • selectProviderConnection()
    • fill-first
    • round-robin
    • quota-aware
    • sticky round-robin updates
    • preferredConnectionId
    • model-locked account exclusion
  • Quota-aware selection reads providerSpecificData.pieLabQuotaSelection snapshots produced by 9router-derived quota fetchers.
  • Server and coding-agent execution paths use checkFallbackError() before trying the next route attempt
  • Server and coding-agent execution paths persist failed connection cooldowns as modelLock_${model}
  • Provider-reported reset timing such as Codex usage_limit_reached.resets_at, resets_in_seconds, Retry-After, and Antigravity-style reset after 1h30m messages can override exponential cooldown, capped like 9router.
  • Server exposes model availability/cooldown state and the 9router-style clearCooldown action.
  • Provide virtual router model ids through PIE_LAB_ROUTER_MODEL_IDS

Still pending:

  • RTK token saver integration