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

@vizuh/sabi

v0.4.0

Published

Sabi: the thin routing layer for coding agents — chooses model, reasoning effort and provider per round from trajectory evidence. Decides model, reasoning effort and provider for each round from trajectory evidence — tool results, failures, context pressu

Readme

@vizuh/sabi

Sabi is the thin routing layer for coding agents. It decides which model, reasoning effort and provider should serve the next round of a task, from the evidence that round actually produced — tool results, failures, context pressure, verification — rather than pinning one model to a whole task or classifying the first prompt and hoping.

This package is that layer and nothing else: a library, no harness, no loop, no daemon.

npm install @vizuh/sabi-router
import { loadConfig, route } from '@vizuh/sabi-router'

const config = loadConfig('./sabi.config.json')
const decision = route(request, config)
// -> { tier, rule, reason, upstream, upstreamModel, state, recovery }

What you get

  • A deterministic policy over trajectory state — exploration, implementation, verification, failure, stuck, context pressure — so a round's cost tracks what the round is doing.
  • Capability as a hard constraint, not a preference: image modalities, declared tools, the output ceiling, and free-only billing rules can disqualify a tier before it is chosen.
  • Escalation without thrash: a failing round moves up the ladder; a recovering one moves back down.
  • Per-tier hard gates: the requested output must fit a tier that declares it, and a substitute must declare the capacity it is chosen for.
  • Typed decisions with bounded evidence, safe to log: no prompts, no credentials, no raw secrets.

What it is not

Sabi does not own the agent loop. The harness keeps its own loop, tools, permissions, history and approvals. It routes the next inference, and — through a host that exposes a decision boundary — it can hand a task to another session. It is not a harness, not an IDE, and not an orchestrator.

Support is reported in layers. Source and tests show a contract exists; a protocol test shows a real client reached a Sabi endpoint; a live smoke shows an authenticated upstream was exercised; an evaluation measures quality and cost against a baseline. A catalog entry, a mock pass, or a hook install proves none of those.

Surfaces it carries

The layer is the product; the host integrations are files in this package, one per host, so installing Sabi is installing all of it:

| Host | Entry point in this package | How the host loads it | | --- | --- | --- | | Command Code | mods/command-code/sabi.mjs | commandcode.mods; cmd mods add -g npm:@vizuh/sabi | | Oh My Pi | mods/oh-my-pi/sabi-extension.mjs | omi.extension; omp --extension … or a user extension directory | | OpenCode | plugins/opencode/sabi-hook.mjs | opencode.plugin; the controller hook Sabi installs | | Orca | plugins/orca/{orca-plugin.json,main.mjs} | orca.plugin; the Orca plugin bridge |

Claude Code and Codex have no file to carry: their integration is the sabi CLI, which installs and repairs their hooks (sabi setup, sabi hooks install).

The per-host packages remain as optional slices for someone who wants one integration and nothing else — @vizuh/sabi-commandcode for the mod on its own. The routing layer is never split out of this name: @vizuh/sabi is Sabi.

License

MIT